日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GO教程:gofmt命令——格式化代碼文件

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

龍江網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),龍江網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為龍江近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的龍江做網(wǎng)站的公司定做!

gofmt 介紹

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

gofmt 是一個 cli 程序,會優(yōu)先讀取標(biāo)準(zhǔn)輸入,如果傳入了文件路徑的話,會格式化這個文件,如果傳入一個目錄,會格式化目錄中所有 .go 文件,如果不傳參數(shù),會格式化當(dāng)前目錄下的所有 .go 文件。

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

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

如下形式的切片表達(dá)式:

[]T{T{}, T{}}

簡化后的代碼為:

[]T{{}, {}}

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

如下形式的切片表達(dá)式:

s[a:len(s)]

簡化后的代碼為:

s[a:]

3) 去除循環(huán)時非必要的變量賦值

如下形式的循環(huán):

for x, _ = range v {...}

簡化后的代碼為:

for x = range v {...}

如下形式的循環(huán):

for _ = range v {...}

簡化后的代碼為:

for range v {...}

gofmt 命令參數(shù)如下表所示:

標(biāo)記名稱 標(biāo)記描述
-l 僅把那些不符合格式化規(guī)范的、需要被命令程序改寫的源碼文件的絕對路徑打印到標(biāo)準(zhǔn)輸出。而不是把改寫后的全部內(nèi)容都打印到標(biāo)準(zhǔn)輸出。
-w 把改寫后的內(nèi)容直接寫入到文件中,而不是作為結(jié)果打印到標(biāo)準(zhǔn)輸出。
-r 添加形如“a[b:len(a)] -> a[b:]”的重寫規(guī)則。如果我們需要自定義某些額外的格式化規(guī)則,就需要用到它。
-s 簡化文件中的代碼。
-d 只把改寫前后內(nèi)容的對比信息作為結(jié)果打印到標(biāo)準(zhǔn)輸出。而不是把改寫后的全部內(nèi)容都打印到標(biāo)準(zhǔn)輸出。
命令程序?qū)⑹褂?diff 命令對內(nèi)容進(jìn)行比對。在 Windows 操作系統(tǒng)下可能沒有 diff 命令,需要另行安裝。
-e 打印所有的語法錯誤到標(biāo)準(zhǔn)輸出。如果不使用此標(biāo)記,則只會打印每行的第 1 個錯誤且只打印前 10 個錯誤。
-comments 是否保留源碼文件中的注釋。在默認(rèn)情況下,此標(biāo)記會被隱式的使用,并且值為 true。
-tabwidth 此標(biāo)記用于設(shè)置代碼中縮進(jìn)所使用的空格數(shù)量,默認(rèn)值為 8。要使此標(biāo)記生效,需要使用“-tabs”標(biāo)記并把值設(shè)置為 false。
-tabs 是否使用 tab('\t')來代替空格表示縮進(jìn)。在默認(rèn)情況下,此標(biāo)記會被隱式的使用,并且值為 true。
-cpuprofile 是否開啟 CPU 使用情況記錄,并將記錄內(nèi)容保存在此標(biāo)記值所指的文件中。

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

【示例】有如下內(nèi)容的 Golang 程序,存儲在 main.go 文件中。

package main

import "fmt"

func main() {
    a := 1
    b := 2
    c := a + b
    fmt.Println(c)
}

用以下規(guī)則來格式化上面的代碼。

gofmt -w -r "a + b -> b + a" main.go

格式化的結(jié)果如下。

package main

import "fmt"

func main() {
    a := 1
    b := 2
    c := b + a
    fmt.Println(c)
}

注意:gofmt 使用 tab 來表示縮進(jìn),并且對行寬度無限制,如果手動對代碼進(jìn)行了換行,gofmt 不會強制把代碼格式化回一行。

go fmt 和 gofmt

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

go help fmt
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í)行 gofmt 命令。


go fmt在調(diào)用 gofmt 時添加了
-l -w參數(shù),相當(dāng)于執(zhí)行了
gofmt -l -w。


分享題目:創(chuàng)新互聯(lián)GO教程:gofmt命令——格式化代碼文件
分享URL:http://www.dlmjj.cn/article/dhpicgg.html