您好,登錄后才能下訂單哦!
這篇文章主要介紹“go版本有哪些變化”,在日常操作中,相信很多人在go版本有哪些變化問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”go版本有哪些變化”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
https://github.com/golang/go/issues?q=milestone%3AGo1.13.5+label%3ACherryPickApproved
搜索欄:milestone:Go1.13.5 label:CherryPickApproved
go1.13.6(發布于2020/01/09)包括對運行時和net/http
程序包的修復。有關詳細信息,請參閱我們的問題跟蹤器上的Go 1.13.6里程碑。
net / http:當代理URL包括身份驗證憑據時,在DialConn中快速寫入t.ProxyConnectHeader [1.13 backport]CherryPickApproved
運行時:在arm64 [1.13 backport]上清除分配計數崩潰增加的消息CherryPickApproved
doc:版本歷史記錄網頁包含次優鏈接[1.13向后移植]CherryPickApproved文檔
在Windows docker容器中運行時,運行時:“嚴重錯誤:PowerRegisterSuspendResumeNotification失敗” [1.13 backport]CherryPickApproved
go1.13.5(于2019/12/04發布)包含對go命令,運行時,鏈接器和net/http
程序包的修復。有關詳細信息,請參閱我們的問題跟蹤器上的Go 1.13.5里程碑。
net / http:Server.ConnContext意外修改了所有連接的上下文[1.13 backport]
全部:確保Go工具鏈符合Apple的公證要求[1.13 backport]CherryPickApproved
cmd / go:執行go get [1.13 backport]CherryPickApproved發布阻止程序時出現“嚴重錯誤:并發映射寫入”
運行時:如果存在多個文本部分,則textOff函數返回錯誤的值[1.13 backport]
cmd / link:使用Android NDK工具鏈進行構建時,零指針取消引用崩潰[1.13 backport]
https://studygolang.com/topics/10355
Go 1.13.4 包括對 net/http 和syscall 包的修復。
兩種版本均解決了macOS 10.15 Catalina 上的一個問題:被 Gatekeeper 拒絕的未經公證的安裝程序和二進制文件。
查看發行說明以獲取更多信息:
https://golang.org/doc/devel/release.html#go1.13.minor
https://studygolang.com/topics/10268
以解決最近報告的安全問題。
無效的 DSA 公鑰可能會導致 dsa.Verify 出現故障。特別是,在精心制作的 X.509 證書鏈上使用 crypto/x509.Verify 可能會導致 panic, 即使證書沒有鏈接到受信任的根。可以通過 crypto/tls 連接將鏈交付給客戶端, 或者接受和驗證客戶端證書的服務器。會通過 HTTPS 服務器使 net/http 客戶端崩潰, 而接受客戶端證書的 net/http 服務器將恢復 panic 并且不受影響。
此外,在 X.509 證書請求,解析 golang.org/x/crypto/openpgp 實體或 golang.org/x/crypto/otr 對話期間, 調用 crypto/x509.(*CertificateRequest) CheckSignature 的應用程序可能會崩潰。最后, 由于主機密鑰格式錯誤,golang.org/x/crypto/ssh 客戶端可能會崩潰, 而如果 PublicKeyCallback 接受格式錯誤的公鑰,或者 IsUserAuthority 接受了格式錯誤的證書,則服務器可能會崩潰。
issue 是 CVE-2019-17596 和 Go 版本 golang.org/issue/34960。
Go 1.13.2 版本還包含編譯器修復程序,可防止在極少數情況下對負 slice 索引的不正確訪問。 受影響的代碼(編譯器可以證明索引為零或負數)將在 Go 1.12.11 中引起 panic , 但可能導致在 Go 1.13 和 Go 1.13.1 中進行任意內存讀寫。這是 Go issue golang.org/issue/34802。
結果在 7點07分,又發布了 Go1.13.3 和 Go1.12.12,應該是上個版本有 bug,緊急修復。
因此不建議使用 Go 1.13.2和Go 1.12.11,可以到 https://studygolang.com/dl 下載 Go1.13.3 和 Go1.12.12。
解決安全問題
https://golang.org/security
Go 1.13.1 和 Go 1.12.10 發布了,修復了一個安全問題,如下:
net/http (通過 net/textproto)接受無效的 HTTP/1.1 報頭并將其標準化,在冒號前會出現空格,產生 RFC 7230 錯誤。
如果一個 Go 服務器在一個不常見的反向代理后面使用,該代理接受并轉發這些無效的報頭,卻不對這些無效報頭進行規范化,反向代理和服務器就會互不相同地解釋這些報頭。這可能導致過濾旁路或請求漏洞( request smuggling),如果來自不同客戶端的請求被代理多路復用到相同的上游連接上,則導致請求漏洞。這些無效的報頭現在被 Go 服務器拒絕,并且在沒有規范化的情況下傳遞給 Go 客戶端應用程序。
查看發布說明以了解更多信息:
https://groups.google.com/forum/m/#!topic/golang-announce/cszieYyuL9Q
相關鏈接
參考來源
Go 1.13 發布了,該版本值得關注的改進包括:
go 命令可直接下載和認證模塊,詳情請看 using the Go module mirror and Go checksum database by default
數字文法的改進 錯誤封裝改進 默認啟用 TLS 1.3 提升對模塊的支持
詳細改進說明請看 https://golang.org/doc/go1.13
[參考來源](https://www.oschina.net/news/109593/go-1-13-released)
https://www.wingsxdu.com/p1391/
首先是模塊化將成為默認的特性,徹底告別GOPATH時代;其次是不是太重要的二進制特性將被廢除;
二進制整數字面量:前綴 0b 或 0B 表示二進制整數字面量,例如 0b1011;
八進制整數字面量:前綴 0o 或 0O 表示八進制整數字面量,例如 0o660(由前導 0 后跟八進制數字指示的八進制表示法仍然有效);
十六進制浮點數字面量:現在可以使用前綴 0x 或 0X 來表示十六進制格式浮點數,例如 0x1.0p-1021。十六進制浮點數必須始終具有指數,寫為字母 p 或 P,后跟十進制的指數。指數將尾數運算為2的指數冪。例 0x1p-2,代表十六進制的 1 除以 22,也就是 0.25;
虛部(復數常數的虛部)字面量:虛部后綴 i 現在可以與任何(二進制,十進制,十六進制)整數或浮點字面值一起使用,例如:0xabci == 0xabc * 1i == 2748i 。
數字分隔符:現在可以使用下劃線分隔(分組)任何數字字面量,例如 1_000_000、0b_1010_0110、3.1415_9265,下劃線可能出現在任何兩位數字或字面量前綴和第一位數字之間。 (沒看懂)
Modules 改進
GO111MODULE 環境變量默認值仍為 auto,但只要當前工作目錄包含或位于包含 go.mod 文件的目錄下,auto 就會激活 go command 模塊感知模式——即使當前目錄在 GOPATH/src 內。
此變更簡化了 GOPATH/src 中現有代碼的遷移,以及對模塊感知軟件包與非模塊感知導入器的持續維護。
GOPROXY 環境變量現在可以設置為以逗號分隔的代理 URL 列表或特殊的token值 direct,其默認值現為https://proxy.golang.org,direct。解析包含其模塊的包路徑時,go命令將連續嘗試列表中每個代理上的所有候選模塊路徑。除404、410之外,無法訪問的代理或 HTTP 狀態代碼將使搜索終止,而無需咨詢其余代理。
GOPRIVATE(new) 環境變量用于聲明不公開的模塊路徑。用作較低優先級的 GONOPROXY 和GONOSUMDB 變量的默認值,通過代理提取哪些模塊并使用校驗和數據庫進行驗證,從而提供更精細的操控。
GOSUMDB(new) 環境變量可標識數據庫的名稱、可選的公鑰和服務器 URL,以查詢主模塊的go.sum文件中尚未列出的模塊的校驗和。如果 GOSUMDB 不包含顯式 URL,則通過檢索支持校驗和數據庫的 GOPROXY URL來選擇 URL,如果所有代理都不支持,則返回到指定數據庫的直接連接。如果GOSUMDB設置為off,則不會查詢校驗和數據庫,只驗證 go.sum 文件中的現有校驗和。
若用戶無法訪問默認代理和校驗和數據庫(例如由于防火墻配置)可將 GOPROXY設置為 dircet和/或將 GOSUMDB 設置為 off 。
go env -w 指令可用于設置這些變量的默認值,全平臺通用:
go env -w GOPROXY=direct go env -w GOSUMDB=off
https://www.infoq.com/news/2019/09/go-1-13-module-mirror-checksumdb/
在語言級別,Go 1.13支持一組更統一的數字文字前綴, 例如0b二進制數字,0x十六進制數字,0o八進制等等。 新版本還使運算符<<和可以使用帶符號的移位計數>>, 從而uint在使用它們時不需要類型轉換。 兩項更改都沒有違反Go承諾與該語言的早期版本兼容的源代碼。
https://github.com/golang/proposal/blob/master/design/19308-number-literals.md
https://www.jianshu.com/p/efe44d4a7501?utm_source=oschina-app
有得必有失,HTTPS 雖然增加了網站安全性,但因為 HTTPS 握手次數增加, 會一定程度上降低用戶訪問速度。 為了使 HTTPS 達到更快的數據傳輸性能,并且在傳輸過程中更加安全, TLS 1.3 新特性
TLS(Transport Layer Security Protocol,傳輸層安全協議)主要目的是提供隱私和數據兩個通信應用之間的完整性。該協議由兩層組成:TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。
當使用 TLS 時,客戶端和服務器之間的連接具有以下一個或多個屬性:
連接私密性:使用對稱加密算法用于加密數據的傳輸,例如 AES [AES], RC4 [SCH] 等 可以使用公鑰加密來驗證通信方的身份 連接可靠性:發送的每個消息都使用 MAC(消息認證碼) 進行完整性檢查
相比 TLS 1.2,TLS 1.3 的握手時間減半。這意味著訪問一個移動端網站,使用 TLS 1.3 協議,可能會減少將近 100ms 的時間。
https://blog.csdn.net/weixin_30257433/article/details/101833961
些時候我們需要更加具體的信息,
而為了代碼健壯性考慮,對于函數返回的每一個錯誤,我們都不能忽略它。 因為出錯的同時,很可能會返回一個 nil 類型的對象。如果不對錯誤進行判斷, 那下一行對 nil 對象的操作百分之百會引發一個 panic。
到此,關于“go版本有哪些變化”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。