編程語言發布 ,由谷歌在社區參與下開發,作為混合解決方案,結合了編譯語言的高性能 和腳本語言的優點 \uXNUMXb\uXNUMXb例如易於編寫代碼,開發速度,和錯誤保護。 項目代碼 在 BSD 許可證下。
Go 的語法基於 C 語言的熟悉元素,並藉鑑了 Python 語言。 語言相當簡潔,但代碼易於閱讀和理解。 Go 代碼被編譯成獨立的二進制可執行文件,無需使用虛擬機(分析、調試和其他運行時問題檢測子系統集成為 ),它可以讓您獲得與 C 語言程序相媲美的性能。
該項目最初的開發著眼於多線程編程和多核系統上的高效操作,包括提供在操作員級別實施的方法,用於組織並行計算和並行執行方法之間的交互。 該語言還提供內置保護,防止分配的內存塊溢出,並提供使用垃圾收集器的能力。
主要的 ,在 Go 1.14 版本中引入:
- 「go」指令中的新模組系統已聲明可供一般使用,預設啟用,並建議用於依賴管理而不是 GOPATH。新的模組系統具有整合版本支援、包傳送工具和改進的依賴管理功能。有了模組,開發人員不再局限於在 GOPATH 樹中工作,可以明確定義版本感知的依賴關係,並創建可重複的構建。
- 支援嵌入具有重疊方法集的介面。內建介面的方法現在可以具有與現有介面中的方法相同的名稱和簽名。明確聲明的方法仍然像以前一樣具有唯一性。
- 「defer」表達式的效能得到了改進,使其幾乎與直接呼叫延遲函數一樣快,從而允許在效能敏感的程式碼中使用延遲函數執行。
- 現在支援非同步 goroutine 搶佔 - 不包含函數呼叫的循環不再可能導致調度程序死鎖或延遲垃圾收集的開始。
- 記憶體頁面分配系統的效率得到了提高,在具有較大 GOMAXPROCS 值的配置中觀察到的鎖定衝突明顯減少。當以密集方式並行化大記憶體區塊時,其結果是減少了延遲並增加了吞吐量。
- 最佳化鎖定並減少執行 time.After、time.Tick、net.Conn.SetDeadline 函數中使用的內部計時器時上下文切換的次數。
- 如果根目錄中有一個用於運送與特定供應商綁定的外部相依性的供應商目錄,則 go 指令預設啟用「-mod=vendor」標誌。新增了一個單獨的標誌“-mod = mod”來從模組快取而不是“vendor”目錄載入模組。如果 go.mod 檔案預設是唯讀的,則當缺少頂級「vendor」目錄時,會設定「-mod=readonly」標誌。新增了「-modfile=file」標誌來指定另一個 go.mod 文件,而不是模組根目錄中的檔案。
- 新增了環境變數 GOINSECURE,設定後,go 指令不需要 HTTPS,並且在直接載入模組時會跳過憑證檢查。
- 編譯器現在有一個預設的「-d=checkptr」標誌來檢查程式碼是否符合 unsafe.Pointer 的安全使用規則。
- 出貨時包含一個新包裹 使用非加密雜湊函數為任意位元組序列或字串建立雜湊表。
- Добавлена экспериментальная поддержка 64-разрядной платформы RISC-V в Linux.
- 增加了對 64 位元 ARM 系統上的 FreeBSD 的支援。
來源: opennet.ru
