go 1.12
昨天,go 官方發布 1.12 版本。本文介紹下 go 1.12 版本變更的內容。
go 1.12 正式版發布了,距離上個正式發布版 go 1.11 已經過去半年。跟往常一樣,go 1.12 保持了 相容性承諾,預期所有 go 程式會像之前一樣正常編譯。新版本的更新亮點有: tls 1.3 的初步支援、模組支援的更強大以及提公升 macos & ios 的前向相容性。新版在語言規範方面沒做改動。
工具
當 go111module 設定為 on 時,go 命令現在支援模組目錄之外的模組感知操作,前提是這些操作不需要解析相對於當前目錄的匯入路徑或顯式編輯 go.mod 檔案。諸如 go get ,go list 和 go mod download 之類的命令就像在具有初始空要求的模組中一樣。
go.mod 檔案中的 go 指令現在指示該模組中檔案使用的語言版本。如果沒有現有版本,它將被設定為當前版本(go 1.12)。如果模組的go指令指定的版本比正在使用的工具鏈更新,則 go 命令將嘗試構建軟體包,並且僅在該構建失敗時才會記錄不匹配。
當使用活動模組無法解析匯入時,go 命令現在將在查詢模組快取記憶體和常用網路源之前嘗試使用主模組的replace 指令中提到的模組。如果找到匹配的替換但但replace指令未指定版本,則 go 命令使用從零time.time(例如 v0.0.0-00010101000000-000000000000)派生的偽版本。
runtime
平台相關
其中關於 freebsd 和 macos,go 1.12 是最後乙個支援 freebsd 10.x 和 macos 10.10 yosemite 的版本。下個版本的 go 1.13 將要求 freebsd 11.2+ 或 freebsd 12.0+,對於 macos,則要求 macos 10.11 el capitan 或更新版本。
核心庫
小結
go 的包管理是一直為人詬病,從 go 1.5 引入的 vendor 機制,到準官方工具dep,go modules 隨著 go 1.11 的發布而和我們見面了,這是官方提倡的包管理,乃至專案管理機制,可以不再需要gopath的存在。到當前的 go 1.12 ,go 語言做了很多努力,正如 go 官方部落格所說:
2018 was a great year for the golang ecosystem, with package management as one of our major focuses.2018 年是 go 生態系統的重要一年,包裝管理是我們的主要關注點之一。 2018 年 2 月,在社群範圍內討論如何將軟體包管理直接整合到go工具鏈中,並且在8月份,go 1.11中提供了該功能的第乙個粗略實現,稱為 go modules。 遷移到 go modules將是 go 生態系統中影響最深遠的變化。轉換整個生態系統:**、使用者、工具等。從 gopath 轉換到模組將需要在許多不同領域開展工作。 模組系統將幫助我們為go生態系統提供更好的身份驗證和構建速度。
相比 godep 和 vendor 機制而言,go modules 已經很先進,go 1.12 已經發布,可以考慮逐步遷移到go modules。
參考
python2 版本 與 3 版本中的區別
目錄unicode編碼 print函式print hello world 2.x版本中格式 print hello world 3.x版本中格式 2.6版本已可以支援新的print 語法 from future import print function print fish panda sep r...
Windbg 32位版本和64位版本的選擇
習慣了vsiual studio的兄弟們可能會因為先入為主的原因以為所有的偵錯程式都應該像它那樣,其實不然,當你安裝 debugging tools for windows的時候,你將發現有兩個系列的工具,一系列32位的工具和一系列64位的工具。這讓人覺得和費解,因為在我們安裝 microsoft ...
關於Python2 0版本與3 0版本中類的區別
在2.0中類的定義是可以通過定義函式的形class person def init self,name,age,gender print 進入person的初始化 self.name name self.age age self.gender gender print 離開person的初始化 de...