中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go代碼格式化gofmt如何使用

發布時間:2023-04-17 11:06:49 來源:億速云 閱讀:149 作者:iii 欄目:開發技術

本篇內容介紹了“Go代碼格式化gofmt如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

gofmt使用

對于一門編程語言來說,代碼格式化是最容易引起爭議的一個問題,不同的開發者可能會有不同的編碼風格和習慣,但是如果所有開發者都能使用同一種格式來編寫代碼,開發者就可以將寶貴的時間專注在語言要解決的問題上。

Golang的開發團隊制定了統一的官方代碼風格,并且推出了gofmt工具(gofmt或go fmt)來幫助開發者格式化他們的代碼到統一的風格。

Gofmt格式化Go程序。它使用制表符進行縮進,使用空格進行對齊。如果沒有顯式路徑,它將處理標準輸入。給定一個文件,它對文件進行操作;給定一個目錄,它遞歸地操作該目錄中的所有.go文件。(忽略以句點開頭的文件。)

默認情況下,gofmt將重新格式化的源打印到標準輸出。

有關gofmt的更多信息,請參見“go doc cmd/gofmt”。

用法:
    gofmt [flags] [path ...]

The flags are:
      -cpuprofile string
        將CPU配置文件寫入此文件
    -d
        不將重新格式化的源打印到標準輸出。
        如果一個文件的格式與gofmt的不同,則將差異部分打印到標準輸出。
    -e
        打印所有(包括虛假)錯誤。
    -l
        不將格式化的源打印到標準輸出。
        如果文件的格式與 gofmt 不同,則將其名稱打印到標準輸出。
    -r rule(string)
        在重新格式化之前,對源應用重寫規則(例如,'a[b:len(a)] -> a[b:]')
    -s
        嘗試簡化代碼(在應用重寫規則后,如果有的話)。
    -w
           不將重新格式化的源打印到標準輸出。
           如果文件的格式與 gofmt 不同,則用 gofmt 的版本覆蓋它。
        如果在覆蓋期間發生錯誤,原始文件將從自動備份中恢復

1. -s

gofmt默認不對代碼進行簡化,使用-s參數可以開啟簡化代碼功能,具體來說會進行如下的轉換:
gofmt -l -d -w -s [path]

去除數組、切片、Map初始化時不必要的類型聲明:

如下形式的切片表達式:
    []T{T{}, T{}}
將被簡化為:
    []T{{}, {}}

去除數組切片操作時不必要的索引指定

如下形式的切片表達式:
    s[a:len(s)]
將被簡化為:
    s[a:]

去除迭代時非必要的變量賦值

如下形式的迭代:
    for x, _ = range v {...}
將被簡化為:
    for x = range v {...}
如下形式的迭代:
    for _ = range v {...}
將被簡化為:
    for range v {...}

不過這可能會導致與早期版本的 Go 不兼容的更改。

2. -r

可以看到,gofmt命令還支持自定義的重寫規則,使用-r參數,按照pattern -> replacement的格式傳入規則。

# 檢查文件中是否有不必要的括號:
    gofmt -r '(a) -> a' -l *.go

# 刪除括號:
    gofmt -r '(a) -> a' -w *.go

3. go fmt和gofmt

gofmt是一個獨立的cli程序,而go中還有一個go fmt命令,go fmt命令是gofmt的簡單封裝。

usage: go fmt [-n] [-x] [packages]

Fmt runs the command 'gofmt -l -w' on the packages named
by the import paths. It prints the names of the files that are modified.
For more about gofmt, see 'go doc cmd/gofmt'.
For more about specifying packages, see 'go help packages'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
To run gofmt with specific options, run gofmt itself.

See also: go fix, go vet.

go fmt命令本身只有兩個可選參數-n-x

  • -n僅打印出內部要執行的go fmt的命令;

  • -x命令既打印出go fmt命令又執行它;

如果需要更細化的配置,需要直接執行gofmt命令。

4. goland中配置gofmt

點擊Setting-> Tools -> File Watchers,點加號添加一個go fmt模版,Goland中預置的go fmt模版使用的是go fmt命令,將其替換為gofmt,然后在參數中增加-l -w -s參數,啟用代碼簡化功能。添加配置后,保存源碼時,goland就會執行代碼格式化了。

Go代碼格式化gofmt如何使用

“Go代碼格式化gofmt如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

大同县| 肃北| 鸡泽县| 贞丰县| 昌都县| 平山县| 屏边| 六枝特区| 巧家县| 三门县| 财经| 理塘县| 长岭县| 莲花县| 铜陵市| 和政县| 多伦县| 大邑县| 玛多县| 太湖县| 莆田市| 保靖县| 北流市| 吉首市| 双流县| 隆安县| 孝昌县| 鲁山县| 长海县| 齐齐哈尔市| 行唐县| 龙胜| 扶绥县| 崇左市| 贵溪市| 铁力市| 元江| 化州市| 阿坝| 赫章县| 额济纳旗|