Go 1.14即將在2月的時候發布,而Go 1.15預計將會在今年8月的時候釋出,官方團隊提到,經過他們各種考量,決議在Go 1.15不加入重大更改,取而代之的是兩個審核檢查以及次要語言調整,包括以Go vet診斷string(int)轉換,以及診斷介面對介面(interface-interface)類型斷言診斷,並且讓常量求值索引和切片表示式(slice expressions)可帶有常量字串和索引。

官方原本預計在Go 1.14版本的Go vet加入診斷string(int)轉換的功能,但因為來不及,因此順延至Go 1.15。string(int)轉換是Go在早期加入的,但是因為有可能造成新手困惑,且unicode/utf8套件現在提供該轉換,由於移除該轉換並非向後相容的更改,因此Go官方提案使其成為Vet錯誤。

目前Go允許任何類型的斷言x.(T),x和T的類型為介面,但是當x和T都具有相同名字但簽章不同的方法,就不可能分配給x又實作T,這樣的類型斷言將會在執行時發生錯誤,在編譯的時候也會有錯誤,而在這個案例回報編譯錯誤並非向後相容的改變,因此官方建議還是從Vet錯誤開始。

另外,目前用一個或多個常量索引,對常量字串進行索引和切片,會分別產生一個非常量位元和字串值,但當所有運算域都是常量,編譯器將可以對這些表示式進行常量求值,並且產生常量結果。這項提案原先Go團隊認為是向後相容的改變,因此建議對規範和編譯器進行調整,但隨後Go團隊發現該提案並非向後相容。

Go開發團隊認為這三個提案應該沒有爭議,但想表達意見的社群成員,仍可以在Go 1.15釋出週期開始提供建議,讓開發團隊可以有足夠的時間評估與回應。開發團隊除了說明Go 1.15的提案,也提到了Go專案最近的狀態,Go當前發展主要目標仍然是套件與版本管理、錯誤處理支援以及泛型。

在去年7月官方試圖推動的錯誤處理機制提案,引起很大的爭議,最後官方決定放棄該提案,而後又有許多建議,但是都不足以說服他們新建議比原先的提案更好,因此目前暫時錯誤處理功能先行擱置,待未來有更好的解決方案再決定。

而官方也提到他們收到的語言變更建議,遠比他們能夠審核的數量多上不少,光錯誤處理就有57個問題,官方表示,因為語言更改的成本很高,而且效益往往不清楚,因此大多數的語言變更建議都會遭到拒絕。為了減少審核委員會的負擔,官方新增了語言變更調查表,社群成員填寫該表將能夠讓提案審核更有效率。


Advertisement

更多 iThome相關內容