<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          『每周譯Go』GO 1.18 中即將出現(xiàn)的功能特性

          共 2846字,需瀏覽 6分鐘

           ·

          2021-11-09 17:46

          Go 1.18 將是 Go 語言的一個重要版本,它將包含一些令我興奮的主要功能。即將到來的版本計劃在 2022 年初發(fā)布。第一個測試版應(yīng)該會在一個月內(nèi)推出。讓我們來提前看看將有哪些新功能被加入到這個版本中。

          范型

          期待已久的泛型支持將在 Go 1.18 中出現(xiàn)。Go 中缺乏泛型是開發(fā)者社區(qū)批評的最大問題。從設(shè)計階段到將在 Go 1.18 中出現(xiàn)的實際實現(xiàn),花了好幾年時間。

          這個話題太大,無法在這篇博文中詳細解釋。已經(jīng)有很多關(guān)于它的好博文了。以下是我最喜歡的一篇,涵蓋了所有相關(guān)方面:https://bitfieldconsulting.com/golang/generics。如果你想玩 Go 泛型,這里有一個托管的 Go Playground 可供選擇。

          工作空間(WORKSPACES)

          工作區(qū)使開發(fā)者能夠更容易地同時處理多個模塊的工作。在 Go 1.17 之前,這只能通過go.modreplace指令來實現(xiàn),如果你有很多模塊在開發(fā)中,使用這個指令會很痛苦。同樣令人痛苦的是,每次你想提交你的代碼時,你必須刪除replace行,以便能夠使用一個模塊的 穩(wěn)定/發(fā)布 版本。

          有了工作區(qū),這些開發(fā)情況的處理就簡單多了。一個名為go.work的新文件可以被添加到項目中,它包含了依賴模塊的本地開發(fā)版本的路徑。go.mod保持不動,不需要使用replace指令。

          go?1.17

          directory?(
          ./baz?//?contains?foo.org/bar/baz
          ./tools?//?contains?golang.org/x/tools
          )

          replace?golang.org/x/net?=>?example.com/fork/net?v1.4.5

          在通常的項目情況下,建議不要提交go.work文件,因為它的主要使用情況是本地開發(fā)。

          如果你想在本地構(gòu)建你的項目而不使用工作區(qū)功能,你可以通過提供以下命令行標志來實現(xiàn):

          go?build?-workfile=off

          通過像這樣運行go build命令,你可以確保你的項目在構(gòu)建時沒有依賴模塊的本地開發(fā)版本。

          官方模糊測試支持

          在 Go 1.18 中也將提供正式的模糊測試支持。模糊功能將被視為實驗性的,API 還沒有被 Go 1 的兼容性承諾所覆蓋。它應(yīng)該作為一個概念驗證,Go 團隊請求社區(qū)提供反饋。

          如果你還沒有聽說過模糊測試,測試版公告的博文對它進行了很好的描述:

          模糊測試是一種自動化測試,它持續(xù)操縱程序的輸入,以發(fā)現(xiàn)問題,如 panic 或 bug。這些半隨機的數(shù)據(jù)突變可以發(fā)現(xiàn)現(xiàn)有單元測試可能遺漏的新的代碼覆蓋范圍,并發(fā)現(xiàn)被忽略或者未被覆蓋的邊緣案例的錯誤。由于模糊測試可以接觸到這些邊緣案例,所以模糊測試對于發(fā)現(xiàn)安全隱患和漏洞特別有價值。

          你可以在這里閱讀 Katie Hockman 的設(shè)計文檔。還有Go Time 播客集,與 Katie 一起討論的這個話題。

          新的軟件包 net/netip

          新包net/netip增加了一個新的 IP 地址類型,與net.IP類型相比,它有很多優(yōu)點。簡單來說:它很小,可比較,而且沒有內(nèi)存分配操作。已經(jīng)有一篇來自 Brad Fitzpatrick 的詳細博文介紹了所有的細節(jié)。如果你喜歡視頻,在Brad 在 FOSDEM 2021 的演講 中也有一段介紹,從時間 18:45 開始觀看。

          更快的(?)go fmt 運行

          go fmt命令現(xiàn)在以并行方式運行格式化。正如Github issue中描述的那樣,格式化大型代碼庫的速度應(yīng)該會快很多。

          但我很困惑為什么在我的機器上進行第一次測試時沒有發(fā)現(xiàn)快很多,它變得更糟糕了。

          我在我的 Macbook Pro 2019(2,6 GHz 6-Core Intel Core i7, 16 GB 2667 MHz DDR4) 的CockroachDB 倉庫上用以下命令進行測試:

          time?go?test?./pkg/...

          使用 Go 1.17,花了56 秒來格式化所有文件。使用最新的gotip版本,花了1 分 20 秒。我還不得不提高我機器上的 ulimit,以防止崩潰。讓我們看看這個功能在穩(wěn)定版之前是如何發(fā)展的。

          試用即將推出的特性功能

          你也可以直接在你的機器上玩最新的實驗性 Go 版本gotip。當(dāng)你已經(jīng)安裝了穩(wěn)定版本的 Go,你只需要運行:

          go?install?golang.org/dl/gotip@latest
          gotip?download

          當(dāng)安裝成功后,你可以像通常的go命令一樣使用gotip命令的所有子命令。

          這篇博文并沒有涵蓋 Go 1.18 中的所有新功能。如果你想閱讀所有的錯誤修復(fù)和新功能特性,你可以在這里看 Go 1.18 的問題列表。

          文中提到的鏈接

          • 范性 Go Playground https://go2goplay.golang.org/
          • 模糊測試測試版本公告博文 https://go.dev/blog/fuzz-beta
          • 模糊測試 Katie Hockman 的設(shè)計文檔 https://go.googlesource.com/proposal/+/master/design/draft-fuzzing.md
          • Go Time 播客集 https://changelog.com/gotime/187
          • net/netip Brad Fitzpatrick 的詳細博文 https://tailscale.com/blog/netaddr-new-ip-type-for-go/
          • Brad 在 FOSDEM 2021 的演講(https://www.youtube.com/embed/csbE6G9lZ-U)
          • go fmt Github issue https://github.com/golang/go/issues/43566
          • CockroachDB 倉庫 https://github.com/cockroachdb/cockroach
          • Go 1.18 release issues (https://dev.golang.org/release#Go1.18)


          原文地址:

          https://sebastian-holstein.de/post/2021-11-08-go-1.18-features/

          原文作者:

          Sebastian Holstein

          本文永久鏈接:https://github.com/gocn/translator/blob/master/2021/w44_upcoming_features_in_go_1.18.md

          譯者:Cluas




          想要了解關(guān)于 Go 的更多資訊,還可以通過掃描的方式,進群一起探討哦~



          瀏覽 70
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲一区欧美 | 一级欧美专区 | 国精品人妻无码一区二区三区牛牛 | 韩日三级片电影在线观看 | 亚洲18禁在线 |