溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

go版本有哪些變化

發(fā)布時間:2021-09-29 16:20:53 來源:億速云 閱讀:124 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“go版本有哪些變化”,在日常操作中,相信很多人在go版本有哪些變化問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”go版本有哪些變化”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

go 版本變更

搜索方式

https://github.com/golang/go/issues?q=milestone%3AGo1.13.5+label%3ACherryPickApproved

搜索欄:milestone:Go1.13.5 label:CherryPickApproved

go1.13.6

go1.13.6(發(fā)布于2020/01/09)包括對運行時和net/http程序包的修復(fù)。有關(guān)詳細(xì)信息,請參閱我們的問題跟蹤器上的Go 1.13.6里程碑。

net / http:當(dāng)代理URL包括身份驗證憑據(jù)時,在DialConn中快速寫入t.ProxyConnectHeader [1.13 backport]CherryPickApproved

運行時:在arm64 [1.13 backport]上清除分配計數(shù)崩潰增加的消息CherryPickApproved

doc:版本歷史記錄網(wǎng)頁包含次優(yōu)鏈接[1.13向后移植]CherryPickApproved文檔

在Windows docker容器中運行時,運行時:“嚴(yán)重錯誤:PowerRegisterSuspendResumeNotification失敗” [1.13 backport]CherryPickApproved

go1.13.5

go1.13.5(于2019/12/04發(fā)布)包含對go命令,運行時,鏈接器和net/http程序包的修復(fù)。有關(guān)詳細(xì)信息,請參閱我們的問題跟蹤器上的Go 1.13.5里程碑。

net / http:Server.ConnContext意外修改了所有連接的上下文[1.13 backport]

全部:確保Go工具鏈符合Apple的公證要求[1.13 backport]CherryPickApproved

cmd / go:執(zhí)行g(shù)o get [1.13 backport]CherryPickApproved發(fā)布阻止程序時出現(xiàn)“嚴(yán)重錯誤:并發(fā)映射寫入”

運行時:如果存在多個文本部分,則textOff函數(shù)返回錯誤的值[1.13 backport]

cmd / link:使用Android NDK工具鏈進(jìn)行構(gòu)建時,零指針取消引用崩潰[1.13 backport]

Go1.13.4 和 1.12.13 兩個小版本發(fā)布

https://studygolang.com/topics/10355

Go 1.13.4 包括對 net/http 和syscall 包的修復(fù)。

兩種版本均解決了macOS 10.15 Catalina 上的一個問題:被 Gatekeeper 拒絕的未經(jīng)公證的安裝程序和二進(jìn)制文件。

查看發(fā)行說明以獲取更多信息:

https://golang.org/doc/devel/release.html#go1.13.minor

Go1.13.3 和 Go1.12.12 小版本發(fā)布

https://studygolang.com/topics/10268

以解決最近報告的安全問題。

無效的 DSA 公鑰可能會導(dǎo)致 dsa.Verify 出現(xiàn)故障。特別是,在精心制作的 X.509 證書鏈上使用 crypto/x509.Verify 可能會導(dǎo)致 panic, 即使證書沒有鏈接到受信任的根。可以通過 crypto/tls 連接將鏈交付給客戶端, 或者接受和驗證客戶端證書的服務(wù)器。會通過 HTTPS 服務(wù)器使 net/http 客戶端崩潰, 而接受客戶端證書的 net/http 服務(wù)器將恢復(fù) panic 并且不受影響。

此外,在 X.509 證書請求,解析 golang.org/x/crypto/openpgp 實體或 golang.org/x/crypto/otr 對話期間, 調(diào)用 crypto/x509.(*CertificateRequest) CheckSignature 的應(yīng)用程序可能會崩潰。最后, 由于主機(jī)密鑰格式錯誤,golang.org/x/crypto/ssh 客戶端可能會崩潰, 而如果 PublicKeyCallback 接受格式錯誤的公鑰,或者 IsUserAuthority 接受了格式錯誤的證書,則服務(wù)器可能會崩潰。

issue 是 CVE-2019-17596 和 Go 版本 golang.org/issue/34960。

Go 1.13.2 版本還包含編譯器修復(fù)程序,可防止在極少數(shù)情況下對負(fù) slice 索引的不正確訪問。 受影響的代碼(編譯器可以證明索引為零或負(fù)數(shù))將在 Go 1.12.11 中引起 panic , 但可能導(dǎo)致在 Go 1.13 和 Go 1.13.1 中進(jìn)行任意內(nèi)存讀寫。這是 Go issue golang.org/issue/34802。

結(jié)果在 7點07分,又發(fā)布了 Go1.13.3 和 Go1.12.12,應(yīng)該是上個版本有 bug,緊急修復(fù)。

因此不建議使用 Go 1.13.2和Go 1.12.11,可以到 https://studygolang.com/dl 下載 Go1.13.3 和 Go1.12.12。

Go 1.13.2 和 go1.12.11

解決安全問題

https://golang.org/security

Go 1.13.1 和 Go 1.12.10

Go 1.13.1 和 Go 1.12.10 發(fā)布了,修復(fù)了一個安全問題,如下:

net/http (通過 net/textproto)接受無效的 HTTP/1.1 報頭并將其標(biāo)準(zhǔn)化,在冒號前會出現(xiàn)空格,產(chǎn)生 RFC 7230 錯誤。

如果一個 Go 服務(wù)器在一個不常見的反向代理后面使用,該代理接受并轉(zhuǎn)發(fā)這些無效的報頭,卻不對這些無效報頭進(jìn)行規(guī)范化,反向代理和服務(wù)器就會互不相同地解釋這些報頭。這可能導(dǎo)致過濾旁路或請求漏洞( request smuggling),如果來自不同客戶端的請求被代理多路復(fù)用到相同的上游連接上,則導(dǎo)致請求漏洞。這些無效的報頭現(xiàn)在被 Go 服務(wù)器拒絕,并且在沒有規(guī)范化的情況下傳遞給 Go 客戶端應(yīng)用程序。

查看發(fā)布說明以了解更多信息:

https://groups.google.com/forum/m/#!topic/golang-announce/cszieYyuL9Q

相關(guān)鏈接

參考來源

Go 1.13

Go 1.13 發(fā)布了,該版本值得關(guān)注的改進(jìn)包括:

go 命令可直接下載和認(rèn)證模塊,詳情請看 using the Go module mirror and Go checksum database by default

數(shù)字文法的改進(jìn) 錯誤封裝改進(jìn) 默認(rèn)啟用 TLS 1.3 提升對模塊的支持

詳細(xì)改進(jìn)說明請看 https://golang.org/doc/go1.13

[參考來源](https://www.oschina.net/news/109593/go-1-13-released)

GO 1.13版本改進(jìn)

1

https://www.wingsxdu.com/p1391/

首先是模塊化將成為默認(rèn)的特性,徹底告別GOPATH時代;其次是不是太重要的二進(jìn)制特性將被廢除;

1.語法糖
  • 二進(jìn)制整數(shù)字面量:前綴 0b 或 0B 表示二進(jìn)制整數(shù)字面量,例如 0b1011;

  • 八進(jìn)制整數(shù)字面量:前綴 0o 或 0O 表示八進(jìn)制整數(shù)字面量,例如 0o660(由前導(dǎo) 0 后跟八進(jìn)制數(shù)字指示的八進(jìn)制表示法仍然有效);

  • 十六進(jìn)制浮點數(shù)字面量:現(xiàn)在可以使用前綴 0x 或 0X 來表示十六進(jìn)制格式浮點數(shù),例如 0x1.0p-1021。十六進(jìn)制浮點數(shù)必須始終具有指數(shù),寫為字母 p 或 P,后跟十進(jìn)制的指數(shù)。指數(shù)將尾數(shù)運算為2的指數(shù)冪。例 0x1p-2,代表十六進(jìn)制的 1 除以 22,也就是 0.25;

  • 虛部(復(fù)數(shù)常數(shù)的虛部)字面量:虛部后綴 i 現(xiàn)在可以與任何(二進(jìn)制,十進(jìn)制,十六進(jìn)制)整數(shù)或浮點字面值一起使用,例如:0xabci == 0xabc * 1i == 2748i 。

  • 數(shù)字分隔符:現(xiàn)在可以使用下劃線分隔(分組)任何數(shù)字字面量,例如 1_000_000、0b_1010_0110、3.1415_9265,下劃線可能出現(xiàn)在任何兩位數(shù)字或字面量前綴和第一位數(shù)字之間。 (沒看懂)

2.工具

Modules 改進(jìn)

GO111MODULE 環(huán)境變量默認(rèn)值仍為 auto,但只要當(dāng)前工作目錄包含或位于包含 go.mod 文件的目錄下,auto 就會激活 go command 模塊感知模式——即使當(dāng)前目錄在 GOPATH/src 內(nèi)。

此變更簡化了 GOPATH/src 中現(xiàn)有代碼的遷移,以及對模塊感知軟件包與非模塊感知導(dǎo)入器的持續(xù)維護(hù)。

GOPROXY 環(huán)境變量現(xiàn)在可以設(shè)置為以逗號分隔的代理 URL 列表或特殊的token值 direct,其默認(rèn)值現(xiàn)為https://proxy.golang.org,direct。解析包含其模塊的包路徑時,go命令將連續(xù)嘗試列表中每個代理上的所有候選模塊路徑。除404、410之外,無法訪問的代理或 HTTP 狀態(tài)代碼將使搜索終止,而無需咨詢其余代理。

GOPRIVATE(new) 環(huán)境變量用于聲明不公開的模塊路徑。用作較低優(yōu)先級的 GONOPROXY 和GONOSUMDB 變量的默認(rèn)值,通過代理提取哪些模塊并使用校驗和數(shù)據(jù)庫進(jìn)行驗證,從而提供更精細(xì)的操控。

GOSUMDB(new) 環(huán)境變量可標(biāo)識數(shù)據(jù)庫的名稱、可選的公鑰和服務(wù)器 URL,以查詢主模塊的go.sum文件中尚未列出的模塊的校驗和。如果 GOSUMDB 不包含顯式 URL,則通過檢索支持校驗和數(shù)據(jù)庫的 GOPROXY URL來選擇 URL,如果所有代理都不支持,則返回到指定數(shù)據(jù)庫的直接連接。如果GOSUMDB設(shè)置為off,則不會查詢校驗和數(shù)據(jù)庫,只驗證 go.sum 文件中的現(xiàn)有校驗和。

若用戶無法訪問默認(rèn)代理和校驗和數(shù)據(jù)庫(例如由于防火墻配置)可將 GOPROXY設(shè)置為 dircet和/或?qū)?GOSUMDB 設(shè)置為 off 。

go env -w 指令可用于設(shè)置這些變量的默認(rèn)值,全平臺通用:

go env -w GOPROXY=direct go env -w GOSUMDB=off

go 版本相關(guān)

https://www.infoq.com/news/2019/09/go-1-13-module-mirror-checksumdb/

數(shù)字文法的改進(jìn)

在語言級別,Go 1.13支持一組更統(tǒng)一的數(shù)字文字前綴, 例如0b二進(jìn)制數(shù)字,0x十六進(jìn)制數(shù)字,0o八進(jìn)制等等。 新版本還使運算符<<和可以使用帶符號的移位計數(shù)>>, 從而uint在使用它們時不需要類型轉(zhuǎn)換。 兩項更改都沒有違反Go承諾與該語言的早期版本兼容的源代碼。

https://github.com/golang/proposal/blob/master/design/19308-number-literals.md

默認(rèn)啟用 TLS 1.3

https://www.jianshu.com/p/efe44d4a7501?utm_source=oschina-app

有得必有失,HTTPS 雖然增加了網(wǎng)站安全性,但因為 HTTPS 握手次數(shù)增加, 會一定程度上降低用戶訪問速度。 為了使 HTTPS 達(dá)到更快的數(shù)據(jù)傳輸性能,并且在傳輸過程中更加安全, TLS 1.3 新特性

TLS(Transport Layer Security Protocol,傳輸層安全協(xié)議)主要目的是提供隱私和數(shù)據(jù)兩個通信應(yīng)用之間的完整性。該協(xié)議由兩層組成:TLS 記錄協(xié)議(TLS Record)和 TLS 握手協(xié)議(TLS Handshake)。

當(dāng)使用 TLS 時,客戶端和服務(wù)器之間的連接具有以下一個或多個屬性:

連接私密性:使用對稱加密算法用于加密數(shù)據(jù)的傳輸,例如 AES [AES], RC4 [SCH] 等 可以使用公鑰加密來驗證通信方的身份 連接可靠性:發(fā)送的每個消息都使用 MAC(消息認(rèn)證碼) 進(jìn)行完整性檢查

相比 TLS 1.2,TLS 1.3 的握手時間減半。這意味著訪問一個移動端網(wǎng)站,使用 TLS 1.3 協(xié)議,可能會減少將近 100ms 的時間。

error

https://blog.csdn.net/weixin_30257433/article/details/101833961

些時候我們需要更加具體的信息,

而為了代碼健壯性考慮,對于函數(shù)返回的每一個錯誤,我們都不能忽略它。 因為出錯的同時,很可能會返回一個 nil 類型的對象。如果不對錯誤進(jìn)行判斷, 那下一行對 nil 對象的操作百分之百會引發(fā)一個 panic。

到此,關(guān)于“go版本有哪些變化”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

go
AI