精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Go 1.9引入了類型別名并提升了運行時和工具支持

責任編輯:editor004

作者:Sergio De Simone

2017-09-04 11:19:03

摘自:INFOQ

根據(jù)Google的工程師Russ Cox所述,漸進式代碼修復是代碼重構中一種很有用的方式,對于大型的代碼庫來說很有價值。為了啟用漸進式代碼修復,必須能為常量、函數(shù)、變量和類型創(chuàng)建另外一個備選的名稱。

在最近發(fā)布的Go 1.9中,最重大的變化就是支持通過聲明類型別名(type alias)實現(xiàn)漸進式代碼修復(gradual code repair)。Go 1.9同時還提升了垃圾收集器和編譯器。

根據(jù)Google的工程師Russ Cox所述,漸進式代碼修復是代碼重構中一種很有用的方式,對于大型的代碼庫來說很有價值。簡而言之,漸進式代碼修復的目標是通過一系列的步驟完成一個較大規(guī)模的重構,也就是說不會在一次自動化的提交中完成所有的變更,而是分成多次提交。原子性的重構方式在概念上通常很簡單,但是如果代碼庫很大的話,就會造成規(guī)模很大的代碼提交,這樣很難審查和合并。借助漸進式代碼修復,我們可以按照三個步驟來重構代碼:首先,引入新的API,它應該能與舊的API共存,所以我們不必立即修改所有使用舊API的代碼;然后,我們將使用舊API的所有地方替換為新API;最后,將舊的API移除。

為了啟用漸進式代碼修復,必須能為常量、函數(shù)、變量和類型創(chuàng)建另外一個備選的名稱。現(xiàn)在,Go允許通過如下的方式聲明類型別名:

type OldAPI = NewPackage.API

這樣的話,所有引用OldAPI的地方都會使用重構之后的類型。如果讀者對漸進式代碼修復的更多討論感興趣的話,那么Russ Cox的闡述是不容錯過的。

按照Google的工程師Francesc Campoy所述,針對Go 1.9所付出的大多數(shù)工程方面的努力都投入在提升運行時、核心庫以及工具方面。最重要的變更包括:

Go的垃圾收集提供了更好的性能,這要歸功于一些庫函數(shù)會觸發(fā)并發(fā)垃圾收集機制,這樣的話只會阻塞調用協(xié)程(goroutine),而不會阻塞整個程序。另外,大對象的堆內存分配也得到了明顯提升。

Go 1.9編譯器能夠并行編譯同一個包中的函數(shù)。在之前版本的編譯器中,已經(jīng)支持了并行編譯不同包中的函數(shù)。

在核心庫方面,Go 1.9借助單調時間跟蹤(monotonic time tracking),讓time包的使用變得更加安全。這樣的話,即便是存在掛鐘時間調整(wall clock adjustment),Time的對比也會更加容易。另外,在sync包中,新的Map類型提供了一個線程安全的并發(fā)map,具有恒定分攤時間(amortized-constant-time)的加載、存儲和刪除功能。

要了解Go 1.9的所有變更的話,可以參考發(fā)布文檔。

查看英文原文:Go 1.9 Introduces Type Aliases, Improves Runtime and Tooling

鏈接已復制,快去分享吧

企業(yè)網(wǎng)版權所有?2010-2025 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 卫辉市| 蓝田县| 五河县| 宁海县| 诏安县| 忻城县| 东乡县| 侯马市| 正镶白旗| 永济市| 紫云| 临江市| 新晃| 海林市| 古丈县| 嘉黎县| 鸡泽县| 清流县| 六盘水市| 宜阳县| 龙海市| 大连市| 吕梁市| 维西| 工布江达县| 莱西市| 关岭| 宜春市| 客服| 泸定县| 黄浦区| 遵义市| 江西省| 鲁甸县| 抚顺市| 扶余县| 建德市| 新巴尔虎左旗| 台州市| 松江区| 宁晋县|