1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        「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)秀的開源項(xiàng)目(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推薦》,主要是每周推薦一個庫或者好的項(xiàng)目,然后寫一點(diǎn)這個庫使用方法或者優(yōu)點(diǎn)之類的,這樣可以真正的幫助到大家能夠?qū)W習(xí)到

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


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


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





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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产在线xxxx | 色欲国产| 啊灬啊灬啊灬快灬高潮了韩国 | 开心五月亚洲综合 | 成人免费无码黄漫视频 | 黄色在线观看国产 | 午夜理伦无码理论片国产 | 91欧美| 色女人综合 | 靠逼视频免看 |