Go代碼格式化gofmt的使用方法實例
gofmt使用
對于一門編程語言來說,代碼格式化是最容易引起爭議的一個問題,不同的開發(fā)者可能會有不同的編碼風格和習慣,但是如果所有開發(fā)者都能使用同一種格式來編寫代碼,開發(fā)者就可以將寶貴的時間專注在語言要解決的問題上。
? Golang的開發(fā)團隊制定了統(tǒng)一的官方代碼風格,并且推出了gofmt工具(gofmt或go fmt)來幫助開發(fā)者格式化他們的代碼到統(tǒng)一的風格。
? 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)
在重新格式化之前,對源應用重寫規(guī)則(例如,'a[b:len(a)] -> a[b:]')
-s
嘗試簡化代碼(在應用重寫規(guī)則后,如果有的話)。
-w
不將重新格式化的源打印到標準輸出。
如果文件的格式與 gofmt 不同,則用 gofmt 的版本覆蓋它。
如果在覆蓋期間發(fā)生錯誤,原始文件將從自動備份中恢復
1. -s
gofmt默認不對代碼進行簡化,使用-s參數(shù)可以開啟簡化代碼功能,具體來說會進行如下的轉(zhuǎn)換:gofmt -l -d -w -s [path]
去除數(shù)組、切片、Map初始化時不必要的類型聲明:
如下形式的切片表達式:
[]T{T{}, T{}}
將被簡化為:
[]T{{}, {}}
去除數(shù)組切片操作時不必要的索引指定
如下形式的切片表達式:
s[a:len(s)]
將被簡化為:
s[a:]
去除迭代時非必要的變量賦值
如下形式的迭代:
for x, _ = range v {...}
將被簡化為:
for x = range v {...}
如下形式的迭代:
for _ = range v {...}
將被簡化為:
for range v {...}
不過這可能會導致與早期版本的 Go 不兼容的更改。
2. -r
可以看到,gofmt命令還支持自定義的重寫規(guī)則,使用-r參數(shù),按照pattern -> replacement
的格式傳入規(guī)則。
# 檢查文件中是否有不必要的括號: 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命令本身只有兩個可選參數(shù)-n
和-x
,
-n
僅打印出內(nèi)部要執(zhí)行的go fmt的命令;-x
命令既打印出go fmt命令又執(zhí)行它;
如果需要更細化的配置,需要直接執(zhí)行gofmt命令。
4. goland中配置gofmt
點擊Setting-> Tools -> File Watchers,點加號添加一個go fmt模版,Goland中預置的go fmt模版使用的是go fmt
命令,將其替換為gofmt
,然后在參數(shù)中增加-l -w -s
參數(shù),啟用代碼簡化功能。添加配置后,保存源碼時,goland就會執(zhí)行代碼格式化了。
總結(jié)
到此這篇關于Go代碼格式化gofmt的使用方法的文章就介紹到這了,更多相關Go代碼格式化gofmt使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
go語言goto語句跳轉(zhuǎn)到指定的標簽實現(xiàn)方法
這篇文章主要介紹了go語言goto語句跳轉(zhuǎn)到指定的標簽實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05