欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go代碼格式化gofmt的使用方法實例

 更新時間:2023年04月17日 09:18:59   作者:小象褲衩  
Golang制定了統(tǒng)一的官方代碼風(fēng)格,并推出gofmt工具(go fmt)來幫助開發(fā)人員格式化代碼到統(tǒng)一的風(fēng)格,下面這篇文章主要給大家介紹了關(guān)于Go代碼格式化gofmt的使用方法,需要的朋友可以參考下

gofmt使用

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

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

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

默認(rèn)情況下,gofmt將重新格式化的源打印到標(biāo)準(zhǔn)輸出。

有關(guān)gofmt的更多信息,請參見“go doc cmd/gofmt”。

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

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

1. -s

gofmt默認(rèn)不對代碼進(jìn)行簡化,使用-s參數(shù)可以開啟簡化代碼功能,具體來說會進(jìn)行如下的轉(zhuǎn)換:
gofmt -l -d -w -s [path]

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

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

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

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

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

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

不過這可能會導(dǎo)致與早期版本的 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í)行它;

如果需要更細(xì)化的配置,需要直接執(zhí)行g(shù)ofmt命令。

4. goland中配置gofmt

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

總結(jié)

到此這篇關(guān)于Go代碼格式化gofmt的使用方法的文章就介紹到這了,更多相關(guān)Go代碼格式化gofmt使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言實現(xiàn)IP段范圍校驗示例

    Go語言實現(xiàn)IP段范圍校驗示例

    這篇文章主要介紹了Go語言實現(xiàn)IP段范圍校驗示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • golang中字符串MD5生成方式總結(jié)

    golang中字符串MD5生成方式總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于golang中字符串MD5生成方式總結(jié)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2021-07-07
  • 源碼剖析Golang中map擴(kuò)容底層的實現(xiàn)

    源碼剖析Golang中map擴(kuò)容底層的實現(xiàn)

    之前的文章詳細(xì)介紹過Go切片和map的基本使用,以及切片的擴(kuò)容機(jī)制。本文針對map的擴(kuò)容,會從源碼的角度全面的剖析一下map擴(kuò)容的底層實現(xiàn),需要的可以參考一下
    2023-03-03
  • Go實現(xiàn)比較時間大小

    Go實現(xiàn)比較時間大小

    這篇文章主要介紹了Go實現(xiàn)比較時間大小的方法和示例,非常的簡單實用,有需要的小伙伴可以參考下。
    2015-04-04
  • 使用systemd部署和守護(hù)golang應(yīng)用程序的操作方法

    使用systemd部署和守護(hù)golang應(yīng)用程序的操作方法

    systemd是一個流行的守護(hù)進(jìn)程管理器,可以輕松管理服務(wù)的啟動、停止、重啟等操作,讓我們的應(yīng)用程序始終保持在線,本文介紹了如何使用systemd部署和守護(hù)golang應(yīng)用程序,感興趣的朋友一起看看吧
    2023-10-10
  • Golang為什么占用那么多的虛擬內(nèi)存原理解析

    Golang為什么占用那么多的虛擬內(nèi)存原理解析

    這篇文章主要介紹了Golang為什么占用那么多的虛擬內(nèi)存原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 詳解Golang如何使用Debug庫優(yōu)化代碼

    詳解Golang如何使用Debug庫優(yōu)化代碼

    這篇文章將針對Golang的debug庫進(jìn)行全面解讀,涵蓋其核心組件、高級功能和實戰(zhàn)技巧,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下
    2024-02-02
  • Go中函數(shù)的使用細(xì)節(jié)與注意事項詳解

    Go中函數(shù)的使用細(xì)節(jié)與注意事項詳解

    在Go語言中函數(shù)可是一等的(first-class)公民,函數(shù)類型也是一等的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于Go中函數(shù)的使用細(xì)節(jié)與注意事項的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • go語言goto語句跳轉(zhuǎn)到指定的標(biāo)簽實現(xiàn)方法

    go語言goto語句跳轉(zhuǎn)到指定的標(biāo)簽實現(xiàn)方法

    這篇文章主要介紹了go語言goto語句跳轉(zhuǎn)到指定的標(biāo)簽實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • go語言單例模式(Singleton)實例分析

    go語言單例模式(Singleton)實例分析

    這篇文章主要介紹了go語言單例模式(Singleton),實例分析了單例模式的原理與Go語言的實現(xiàn)技巧,需要的朋友可以參考下
    2015-03-03

最新評論