Go團隊發布Go 1.9,包含很多更新
8月24日,Go團隊宣布發布Go 1.9。可以從下載頁面獲取。這個版本中的大部分工作是改進了運行時和工具,包括語言,標準庫,運行時和工具都有許多變化。
最重要的更新內容:
1. 語言最重要的改變是引入類型別名:該特性用于支持逐步修復代碼。
類型別名聲明的格式如下:
type T1 = T2
2. 此聲明為類型T2引入了別名T1,其方式與byte一直是uint8的別名一樣。
類別別名設計文檔和重構文章有更詳細地介紹。
3. 新的math/bits封裝提供了無符號整數的位計數和處理功能,在可能的情況下由特殊CPU指令實現。
例如,在x86-64系統上,bits.TrailingZeros(x)使用BSF指令。
4. 同步包已經添加了一個新的Map類型,可以安全地進行并發訪問。
您可以從 GopherCon 2017 lightning talk 幻燈片檔中閱讀更多信息,并進一步了解為什么創建它。
它不是Go map類型的普通替代品;
請參閱文檔以了解何時使用。
5. 測試包也有一個補充。
新的Helper方法,添加到testing.T和tests.B中,將調用函數標記為測試助手函數。
當測試包打印文件和行信息時,它顯示調用幫助函數的位置,而不是輔助函數本身中的一行。
例如,研究這個測試:
package p
import "testing"
func failure(t *testing.T) {
t.Helper() // This call silences this function in error reports.
t.Fatal("failure")
}
func Test(t *testing.T) {
failure(t)
}
因為failure將自身標識為測試助手,所以在測試期間打印的錯誤消息將指示第11行,failure在哪里被調用,而不是第7行,failure調用t.Fatal。
6. 時間包現在透明地跟蹤每個時間值中的monotonic time,使得在兩個時間值之間的計算持續時間是在存在時鐘調整的情況下的安全操作。
例如,此代碼現在即使跨越第二個時鐘復位,也可以計算正確的經過時間:
start := time.Now()
f()
elapsed := time.Since(start)
最后,作為努力的一部分,為了使Go編譯器更快速化,Go 1.9同時在一個包中編譯函數。
Go 1.9包括很多的補充,改進和修復。在Go 1.9發行說明中有完整的修改和改進信息。
為了慶祝發行,世界各地的Go用戶組正在舉行發布會。
本站原創,轉載時保留以下信息:
本文轉自:深度開源(open-open.com)
原文地址:http://www.baiduhome.net/news/view/b6272a9