<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>

          「GoCN酷Go推薦」更嚴(yán)格的代碼格式化工具 gofumpt

          共 1964字,需瀏覽 4分鐘

           ·

          2021-12-09 12:27

          #?前言?#

          gofmt 是 golang 自帶的代碼自動格式化工具,是保證 Go 代碼風(fēng)格一致的大殺器。我們這次要推薦的 gofumptgofmt 的基礎(chǔ)上添加了一系列更加嚴(yán)格的格式化規(guī)則,并保證了對 gofmt 的兼容。

          gofumpt 有助于進(jìn)一步提升代碼質(zhì)量,它已經(jīng)成為 gopls(Go 官方語言服務(wù))中可選的格式化工具以及 golangci-lint 中支持的 linter,正在被越來越多優(yōu)秀的開源項目(sourcegraph、gitlab 等)所使用。

          #?gofumpt 簡介?#

          gofumpt(https://github.com/mvdan/gofumpt) fork 自 gofmt,支持與 gofmt 幾乎相同的命令行參數(shù),因此可以作為 gofmt 的直接替代品使用。gofumptgofmt 的“超集”,經(jīng)過 gofumpt 格式化的代碼也符合 gofmt 的要求,其本身所擴(kuò)展的格式化規(guī)則也可能在后續(xù)被集成進(jìn) gofmt

          gofumpt 有以下特點(diǎn):

          1. 更多的格式化規(guī)則(參見 https://github.com/mvdan/gofumpt#Added-rules)
          2. 默認(rèn)跳過對 vendor 的格式化
          3. 不對自動生成的代碼應(yīng)用擴(kuò)展規(guī)則
          4. 不支持 -r 參數(shù)

          以上第 2、3 個特性對于格式化整個 go 工程來說尤其友好,在格式化代碼的同時可以避免對自動生成代碼(mock、proto 等)的入侵!

          #?使用舉例?#

          安裝 gofumpt

          go?install?mvdan.cc/gofumpt@latest

          gofumpt 的用法與 gofmt 用法非常類似,使用過 gofmt 的同學(xué)上手會非常容易。gofumpt 的格式化規(guī)則擴(kuò)展很多,下面只取幾個典型的例子進(jìn)行介紹:

          注:以下例子均不會被 gofmt(1.17.2) 格式化

          賦值運(yùn)算符后不能有空行

          package?demo

          func?foo()?{
          ?foo?:=
          ??"bar"
          }

          格式化后:

          package?demo

          func?foo()?{
          ?foo?:=?"bar"
          }

          簡單的錯誤檢查之前不能有空行

          package?demo

          foo,?err?:=?processFoo()

          if?err?!=?nil?{
          ?return?err
          }

          格式化后:

          package?demo

          foo,?err?:=?processFoo()
          if?err?!=?nil?{
          ?return?err
          }

          標(biāo)準(zhǔn)庫的導(dǎo)入必須位于頂部的單獨(dú)組中

          package?demo

          import?(
          ?"foo.com/bar"

          ?"io"

          ?"io/ioutil"
          )

          格式化后:

          package?demo

          import?(
          ?"io"
          ?"io/ioutil"

          ?"foo.com/bar"
          )

          代碼簡化標(biāo)志(-s)默認(rèn)啟用

          package?demo

          var?_?=?[][]int{[]int{1}}

          格式化后:

          package?demo

          var?_?=?[][]int{{1}}

          更多的例子請大家參考 https://github.com/mvdan/gofumpt#Added-rules

          編輯器集成

          gofumpt 除了作為命令行工具直接使用之外,還可以集成到編輯器中供我們使用,例如在 vscode 中集成 gofumpt 只需要以下配置:

          "go.useLanguageServer":?true,
          "gopls":?{
          ?"formatting.gofumpt":?true,
          },

          更多的編輯器集成請參考 https://github.com/mvdan/gofumpt#installation

          # 總結(jié)?#

          gofumpt 是一款優(yōu)秀的 go 代碼格式化擴(kuò)展工具,能夠幫助我們進(jìn)一步提升代碼質(zhì)量,來試試看吧!

          # 參考資料?#

          • https://github.com/mvdan/gofumpt
          • https://golangci-lint.run/usage/linters/

          歡迎加入 GOLANG 中國社區(qū):https://gocn.vip


          《酷Go推薦》招募:


          各位Gopher同學(xué),最近我們社區(qū)打算推出一個類似GoCN每日新聞的新欄目《酷Go推薦》,主要是每周推薦一個庫或者好的項目,然后寫一點(diǎn)這個庫使用方法或者優(yōu)點(diǎn)之類的,這樣可以真正的幫助到大家能夠?qū)W習(xí)到

          新的庫,并且知道怎么用。


          大概規(guī)則和每日新聞類似,如果報名人多的話每個人一個月輪到一次,歡迎大家報名!戳「閱讀原文」,即可報名


          掃碼也可以加入 GoCN 的大家族喲~





          瀏覽 127
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  翔田千一区二区三区 | 日韩成人AV一区 | 台湾一区二区三区在线 | 国产色爽精品无码视频 | 美女黄页视频 |