Go 的語法基於 C 語言的熟悉元素,並藉鑑了 Python 語言。 語言相當簡潔,但代碼易於閱讀和理解。 Go 代碼被編譯成獨立的二進制可執行文件,無需使用虛擬機(分析、調試和其他運行時問題檢測子系統集成為
該項目最初的開發著眼於多線程編程和多核系統上的高效操作,包括提供在操作員級別實施的方法,用於組織並行計算和並行執行方法之間的交互。 該語言還提供內置保護,防止分配的內存塊溢出,並提供使用垃圾收集器的能力。
主要的
- crypto/tls 包預設啟用協議支持
TLS 1.3的 。 新增了新套件“crypto/ed25519”,支援 Ed25519 數位簽章; - 增加了對新數字文字前綴的支持,以定義二進制數(例如0b101)、八進制(0o377)、虛數(2.71828i)和十六進制浮點(0x1p-1021),並能夠使用“_”字符在視覺上分隔數字大量 (1_000_000);
- 取消了在移位操作中僅使用無符號計數器的限制,這避免了在使用“←”和“←”運算符之前不必要地轉換為 uint 類型;
- 增加了對 Illumos 平台 (GOOS=illumos) 的支援。 保證了與Android 10平台的兼容性,提高了對FreeBSD(11.2)和macOS(10.11“El Capitan”)最低版本的要求。
- 繼續開發新的模組系統,可以作為GOPATH的替代品。 與先前在 Go 1.13 中宣布的計劃相反,該系統預設未啟用,需要透過 GO111MODULE=on 變數或使用自動應用模組的上下文來啟動。 新的模組系統具有整合的版本控制支援、套件交付功能和改進的依賴關係管理。 使用模組,開發人員不再局限於在 GOPATH 樹中工作,可以明確定義版本化依賴項,並創建可重複的構建。
與先前的版本不同,當執行 go 命令時當前工作目錄或父目錄中存在 go.mod 檔案時,包括當它位於 GOPATH/src 目錄中時,新系統的自動應用程式現在可以工作。 新增了新的環境變數:GOPRIVATE,定義可公開存取的模組的路徑;GOSUMDB,指定 go.sum 檔案中未列出的模組的校驗和資料庫的存取參數;
- 預設情況下,「go」命令會載入模組並使用 Google 維護的模組鏡像和校驗和資料庫(proxy.golang.org、sum.golang.org 和 index.golang.org)檢查其完整性;
- 對僅二進位套件的支援已停止;以「//go:binary-only-package」模式建置套件現在會導致錯誤;
- 在“go get”命令中添加了對“@patch”後綴的支持,表示模組應更新到最新的維護版本,但不更改當前的主要或次要版本;
- 從原始碼控制系統檢索模組時,「go」指令現在會對版本字串執行額外檢查,嘗試將偽版本號與儲存庫中的元資料進行比對;
- 增加了支持
錯誤檢查 (錯誤包裝)透過建立允許使用標準錯誤處理程序的包裝器。 例如,錯誤 “e”可以透過提供一種方法來包裹錯誤“w”開卷 ,返回“w”。 程式中存在錯誤“e”和“w”,並根據錯誤“w”做出決策,但“e”為“w”提供了額外的上下文或對其進行了不同的解釋; - 運行時組件的效能已得到最佳化(已註意到速度提高了高達30%),並且已實現更積極地將記憶體返回給作業系統(以前,記憶體會在五分鐘或更長時間後返回,但現在會立即返回)減少堆大小後)。
來源: opennet.ru