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

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>
      主站蜘蛛池模板: 阿城市| 浪卡子县| 南乐县| 日土县| 太谷县| 新巴尔虎右旗| 行唐县| 温州市| 田东县| 竹溪县| 苍山县| 巴林右旗| 温泉县| 靖边县| 新巴尔虎左旗| 盐源县| 宿州市| 大关县| 鲜城| 南和县| 忻州市| 滁州市| 胶南市| 衡南县| 遂昌县| 东港市| 阿克陶县| 屏边| 浠水县| 永宁县| 高密市| 乌鲁木齐市| 巍山| 克东县| 县级市| 灵石县| 牡丹江市| 永新县| 罗江县| 麻阳| 平利县|