日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

golang 命令詳解

Github地址


1. build 編譯包和依賴項(xiàng)

2. clean 刪除對象文件和緩存的文件

3. doc與godoc 顯示包文檔

4. env 打印Go語言的環(huán)境信息

5. fix與go tool fix 會把指定包中的所有Go語言源碼文件中舊版本代碼修正為新版本的代碼,升級版本時非常有用

6. fmt與gofmt 格式化go源文件

7. generate

8. get 下載并安裝包和依賴(下載包和依賴,并對它們進(jìn)行編譯安裝)

9. install 編譯并安裝指定包及它們的依賴包,

10. list 列出包和模塊信息

11. mod 管理模塊

12. run 編譯并運(yùn)行Go程序

13. test 測試包

14. tool 運(yùn)行指定的go工具

15. version 查看當(dāng)前go語言版本

16. vet 報告包中可能出現(xiàn)的錯誤

1. build 編譯包和依賴項(xiàng)


build 編譯包和依賴項(xiàng)

usage: go build [-o output] [-i] [build flags] [packages]

用法:  go build [-o output] [-i] [build 參數(shù)] [包]

可選參數(shù):

    -o 編譯單個包才能使用(不能同時對多個代碼包進(jìn)行編譯),例如我們經(jīng)常重新命名可執(zhí)行文件名字

    -i 標(biāo)志安裝的包是目標(biāo)的依賴項(xiàng)

    -a 強(qiáng)制重新構(gòu)建已經(jīng)更新的包

    -n 打印編譯時執(zhí)行的命令,但不真正執(zhí)行

    -p 開啟并發(fā)編譯,默認(rèn)情況下該值為CPU邏輯核數(shù)

    -race 開啟競態(tài)檢測,只支持linux/amd64、freebsd/amd64、darwin/amd64和windows/amd64.

    -msan 內(nèi)存掃描

    -v 編譯包時打印包的名稱

    -work 編譯時打印臨時工作目錄的名稱,退出時不刪除它

    -x 打印編譯時執(zhí)行的命令(打印編譯時會用到的所有命令)

    -asmflags '[pattern=]arg list',傳遞給每個go工具asm調(diào)用的參數(shù)

    -buildmode mode 使用編譯模式, 更多信息請參見“go help buildmode”

    -compiler name 設(shè)置編譯時使用編譯器名,編譯器名稱只有2個選項(xiàng)(gccgo或gc)

    -gccgoflags '[pattern=]arg list' 傳遞每個gccgo編譯器/鏈接器調(diào)用的參數(shù)列表

    -gcflags '[pattern=]arg list' 用于指定需要傳遞給go tool compile命令的參數(shù)的列表,更多信息參見(go tool compile)

    -installsuffix suffix 為了使當(dāng)前的輸出目錄與默認(rèn)的編譯輸出目錄分離,可以使用這個標(biāo)記.此標(biāo)記的值會作為結(jié)果文件的父目錄名稱的后綴.其實(shí),如果使用了-race標(biāo)記,這個標(biāo)記會被自動追加且其值會為race.如果我們同時使用了-race標(biāo)記和-installsuffix,那么在-installsuffix標(biāo)記的值的后面會再被追加_race,并以此來作為實(shí)際使用的后綴

    -ldflags '[pattern=]arg list' 用于指定需要傳遞給go tool link命令的參數(shù)的列表

    -linkshared

    -mod mode 模塊下載方式,只有2個選項(xiàng)(readonly或vendor),更多信息請參見(go help modules)

    -pkgdir dir 設(shè)置包目錄.編譯器會只從該目錄中加載代碼包的歸檔文件,并會把編譯可能會生成的代碼包歸檔文件放置在該目錄下

    -tags 'tag list'

    -toolexec 'cmd args' 用于在編譯期間使用一些Go語言自帶工具(如vet、asm等)的方式

示例:

go build [1個或多個go源文件, 或者包名, 或者包所在目錄]

go build a.go b.go main.go

go build main.go

go build hello

# 把main.go編譯成可執(zhí)行文件hello.exe

go build -o hello.exe  main.go

# 打印編譯時執(zhí)行的命令,但不真正執(zhí)行

go build -n

# 答應(yīng)工作目錄

go build -work

2. clean 刪除對象文件和緩存的文件


clean 刪除執(zhí)行其他命令時產(chǎn)生的文件、目錄和緩存文件.

    具體地說.clean 會刪除從導(dǎo)入路徑對應(yīng)的源碼目錄中,刪除以下這些文件和目錄

        _obj/            old object directory, left from Makefiles

        _test/          old test directory, left from Makefiles

        _testmain.go    old gotest file, left from Makefiles

        test.out        old test log, left from Makefiles

        build.out        old test log, left from Makefiles

        *.[568ao]        object files, left from Makefiles

        DIR(.exe)        from go build

        DIR.test(.exe)  from go test -c

        MAINFILE(.exe)  from go build MAINFILE.go

        *.so            from SWIG

usage: go clean [clean flags] [build flags] [packages]

  用法: go clean [clean 參數(shù)]  [build參數(shù)]  包

  可選參數(shù):

    -i 會刪除安裝當(dāng)前代碼包所有產(chǎn)生的所有文件, 如果當(dāng)前包是一個普通包(不是main包),則結(jié)果文件指的就是在工作區(qū)的pkg目錄的相應(yīng)目錄下的歸檔文件.如果當(dāng)前代碼包中只包含一個命令源碼文件, 則刪除當(dāng)前目錄和在工作區(qū)的bin目錄下的可執(zhí)行文件和測試文件.

    -n 打印clean執(zhí)行的命令,但不真正執(zhí)行

    -r 刪除當(dāng)前代碼包和所有的依賴包產(chǎn)生的文件、目錄和緩存文件

    -x 打印clean執(zhí)行的刪除命令

    -cache 刪除所有 go build 的緩存

    -testcache 刪除當(dāng)前包所有的測試結(jié)果

3. doc 顯示包文檔


doc與godoc 顯示包或符號的文檔, 更多用法請參考(godoc -h)

usage: go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]

用法:  go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]

可選參數(shù):

    -c 區(qū)分參數(shù)包名的大小寫.默認(rèn)情況下,包名是大小寫不敏感的

    -cmd 打印 main 包文檔, 默認(rèn)情況下不會打印 main 包文檔

    -u 打印出所有的文檔(同事包含可導(dǎo)出和不可導(dǎo)出實(shí)體)

示例:

# 顯示 hellomod 包文檔,(注意 hellomod 和 Hellomod是不同的包)

go doc -c hellomod

4. env 打印Go語言的環(huán)境信息


env 打印Go語言的環(huán)境信息

usage: go env [-json] [var ...]

用法: go env [-json] [變量 ...]

可選參數(shù):

    -json 以json格式打印環(huán)境信息

示例:

# 以json格式打印所有環(huán)境信息

go env -json

# 以json格式只打印 GOOS 程序構(gòu)建環(huán)境的目標(biāo)操作系統(tǒng)

go env -json GOOS

# 打印所有環(huán)境信息

go env

# 只打印 GOOS 程序構(gòu)建環(huán)境的目標(biāo)操作系統(tǒng)

go env GOOS

5. fix與go tool fix 會把指定包中的所有Go語言源碼文件中舊版本代碼修正為新版本的代碼,升級版本時非常有用


fix 會把指定包中的所有Go語言源碼文件中舊版本代碼修正為新版本的代碼

usage: go fix [packages]

示例:

go fix testmod

go tool fix -h

usage: go tool fix [-diff] [-r fixname,...] [-force fixname,...] [path ...]

    -diff 不將修正后的內(nèi)容寫入文件, 而只打印修正前后的內(nèi)容的對比信息到標(biāo)準(zhǔn)輸出

    -force string 使用此參數(shù)后, 即使源碼文件中的代碼已經(jīng)與Go語言的最新版本相匹配, 也會強(qiáng)行執(zhí)行指定的修正操作.該參數(shù)值就是需要強(qiáng)行執(zhí)行的修正操作的名稱,多個名稱之間用英文半角逗號分隔

    -r string 只對目標(biāo)源碼文件做有限的修正操作.該參數(shù)的值即為允許的修正操作的名稱.多個名稱之間用英文半角逗號分隔

6. fmt與gofmt 格式化go源文件

Go 開發(fā)團(tuán)隊(duì)不想要 Go 語言像許多其它語言那樣總是在為代碼風(fēng)格而引發(fā)無休止的爭論,浪費(fèi)大量寶貴的開發(fā)時間,因此他們制作了一個工具:go fmt(gofmt)


fmt與gofmt 命令 格式化go源文件,fmt命令實(shí)際"gofmt -l -w"命令之上做了一層包裝,我們一般使用

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

用法: go fmt [-n] [-x] 包

可選參數(shù):

    -x 打印執(zhí)行的命令

    -n 打印執(zhí)行的命令,但不真正執(zhí)行

示例:

# 格式化 testmod 包, 并顯示執(zhí)行命令

go fmt -x testmod

gofmt 命令

usage: gofmt [flags] [path ...]

用法: gofmt [參數(shù)] [路徑 ...]

可選參數(shù):

    -cpuprofile string 將cpu配置文件寫入此文件

    -d 顯示格式化前后差異,但不寫入文件

    -e 打印所有錯誤, 默認(rèn)只會打印不同行的前10個錯誤

    -l 列出需要格式化的文件

    -r string 重新規(guī)則,方便我們做批量替換,例如我們需要把hellomod.Hello替換成hellomod.HelloNew("hellomod.Hello -> hellomod.HelloNew")

    -s 簡化代碼

    -w 將結(jié)果直接寫入到文件中



示例:

# 格式當(dāng)前目錄代碼

gofmt -w ./

# 把當(dāng)前目錄中的“hellomod.Hello” 替換成 "hellomod.HelloNew"

gofmt -r "hellomod.Hello -> hellomod.HelloNew" -w ./

8. get 下載并安裝包和依賴(下載包和依賴,并對它們進(jìn)行編譯安裝)


get 命令 下載并安裝包和依賴(下載包和依賴,并對它們進(jìn)行編譯安裝)

usage: go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

用法: go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [包]

可選參數(shù):

    -d 只下載不安裝(只執(zhí)行下載動作, 不執(zhí)行安裝動作)

    -f 只有在包含了-u參數(shù)的時候才有效.該參數(shù)會讓命令程序忽略掉對已下載代碼包的導(dǎo)入路徑的檢查.如果下載并安裝的代碼包所屬的項(xiàng)目是你從別人那里Fork過來的,那么這樣做就尤為重要了

    -fix 會下載代碼包后先執(zhí)行修正動作,而后再進(jìn)行編譯和安裝

    -insecure 請謹(jǐn)慎使用, 允許使用不安全(http或者自定義域)的存儲庫中下載解析.

        即:允許命令程序使用非安全的scheme(如HTTP)去下載指定的代碼包.如果你用的代碼倉庫(如公司內(nèi)部的Gitlab)沒有HTTPS支持,可以添加此標(biāo)記.請?jiān)诖_定安全的情況下使用它.

    -t 同時也下載需要為運(yùn)行測試所需要的包

    -u 強(qiáng)制從網(wǎng)絡(luò)更新包和它的依賴包.默認(rèn)情況下,該命令只會從網(wǎng)絡(luò)上下載本地不存在的代碼包,而不會更新已有的代碼包

    -v 顯示執(zhí)行的命令

示例:

# 下載包

go get github.com/donvito/hellomod

9. install 編譯并安裝指定包及它們的依賴包,


install 編譯并安裝指定包及它們的依賴包,先生成中間文件(可執(zhí)行文件或者.a包),然后把編譯好的結(jié)果移到$GOPATH/pkg或者$GOPATH/bin

usage: go install [-i] [build flags] [packages]

用法: go install [-i] [編譯 flags] [包]

可選參數(shù):

    -i

示例:

# 安裝包

go install github.com/gin-gonic/gin

10. list 列出包和模塊信息


list 列出包和模塊信息

usage: go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

用法: go list [-f format] [-json] [-m] [list flags] [build flags] [包]

可選參數(shù):

    -f {{.字段名}} 查看指定的字段信息

    -json 以json格式打印信息

    -m 列出模塊信息

更多用法請參考(go help list)

示例:

# 以json格式打印gApp包信息

go list -json gapp

# 打印模塊信息

go list -m testmod

# 以json格式打印模塊信息

go list -m -json testmod

# testmod模塊打印結(jié)果:

{

        "Path": "testmod",

        "Main": true,

        "Dir": "/Users/zhaoweijie/go/src/business-card/Docker-compose/go-tutorials/9/examples/testmod",

        "GoMod": "/Users/zhaoweijie/go/src/business-card/docker-compose/go-tutorials/9/examples/testmod/go.mod"

}

11. mod 管理模塊


mod 管理模塊

Usage: go mod <command> [arguments]

用法: go mod <命令> [參數(shù)]

可選命令<command>: go help mod <command>

    download    下載模塊到本地緩存

        usage: go mod download [-json] [modules]

          用法:

        可選參數(shù):

            -json

        示例:

            # 下載模塊,以json格式打印模塊信息

            go mod download -json github.com/qq1060656096/hellomod 

            # json格式打印 github.com/qq1060656096/hellomod 模塊信息

            {

                    "Path": "github.com/qq1060656096/hellomod",

                    "Version": "v1.0.0",

                    "Info": "/Users/zhaoweijie/go/pkg/mod/cache/download/github.com/qq1060656096/hellomod/@v/v1.0.0.info",

                    "GoMod": "/Users/zhaoweijie/go/pkg/mod/cache/download/github.com/qq1060656096/hellomod/@v/v1.0.0.mod",

                    "Zip": "/Users/zhaoweijie/go/pkg/mod/cache/download/github.com/qq1060656096/hellomod/@v/v1.0.0.zip",

                    "Dir": "/Users/zhaoweijie/go/pkg/mod/github.com/qq1060656096/hellomod@v1.0.0",

                    "Sum": "h1:O66u/mTlM4cHHdwuKPNpUBmJor2XOv0Wa0j+qfOwAN4=",

                    "GoModSum": "h1:TOAQUVNcJP1uykhVNbIcfTsdYdjs2zrIYEtpAGWpcqg="

            }

    edit  提供命令來編輯go.mod文件, 主要用于工具或腳本

        usage: go mod edit [editing flags] [go.mod]

        用法: go mod edit [editing flags] [go.mod]

        可選參數(shù):

            -fmt 只會格式化go.mod文件

            -module 更改模塊路徑

            -require=path@version 添加模塊依賴

                示例:

                    # 添加hellomod模塊v1.0.0版本

                    go mod edit -require=github.com/qq1060656096/hellomod@v1.0.0

            -droprequire=path 刪除模塊依賴

                示例:

                    # 刪除hellomod模塊

                    go mod edit -droprequire=github.com/qq1060656096/hellomod

            -exclude=path@version 排查模塊

                # 排除hellomod模塊v1.0.0版本

                go mod edit -exclude=github.com/qq1060656096/hellomod@v1.0.0

            -dropexclude=path@version 刪除排除的模塊(恢復(fù)排除的模塊)

                # 恢復(fù)排除hellomod模塊v1.0.0版本

                go mod edit -dropexclude=github.com/qq1060656096/hellomod@v1.0.0

            -replace=old[@v]=new[@v] 替換模塊

                示例:

                    # hellomod模塊v1.0.0版本替換成v2.0.0版本

                    go mod edit -replace=github.com/qq1060656096/hellomod@v1.0.0=github.com/qq1060656096/hellomod@v2.0.0

            -dropreplace=old[@v]

            -print 打印結(jié)果,不會操作go.mod文件

            -json 以json格式打印結(jié)果,不會操作go.mod文件

    graph  打印模塊需求圖

        usage: go mod graph

        用法: go mod graph

    init    在當(dāng)前?件夾下初始化?個新的模塊(創(chuàng)建go.mod?件)

        usage: go mod init [module]

        用法: go mod init [模塊名]

        示例:

            # 創(chuàng)建“github.com/qq1060656096/hellomod”模塊

            go mod init github.com/qq1060656096/hellomod

    tidy    整理模塊(增加缺少的模塊,刪除未?的模塊)

        usage: go mod tidy [-v]

        用法: go mod tidy [-v]

        可選參數(shù):

            -v 打印已經(jīng)刪除的模塊信息

        示例:

            # 整理模塊,并打印已經(jīng)刪除的模塊

            go mod tidy -v

    vendor  將依賴復(fù)制到vendor下

        usage: go mod vendor [-v]

        用法: go mod vendor [-v]

        可選參數(shù):

            -v 打印復(fù)制到vendor的所有包和模塊

        示例:

            # 打印復(fù)制到vendor的所有包和模塊

            go mod vendor -v

    verify  校驗(yàn)依賴的HASH碼,驗(yàn)證檢查當(dāng)前模塊的依賴, 如果依賴本有更改就使用之前的, 如果所有模塊都沒有更改,就打印"all modules verified

", 否則就報告(打印)已更改的模塊

        usage: go mod verify

        用法: go mod verify

        示例:

            go mod verify

    why    解釋為什么需要依賴

        usage: go mod why [-m] [-vendor] packages...

        用法: go mod why [-m] [-vendor] packages...

        可選參數(shù)

            -vendor

            -m

12. run 編譯并運(yùn)行Go程序


run 命令 編譯并運(yùn)行Go程序

usage: go run [build flags] [-exec xprog] package [arguments...]

用法: go run [編譯 flags] [-exec xprog] 包 [arguments...]

可選參數(shù): 其他參數(shù)請參考(go help build)

    -exec

示例:

# 運(yùn)行maing.go

go run main.go

# 運(yùn)行maing.go并開啟競態(tài)檢測(開發(fā)時建議開啟這個選項(xiàng))

go run -race main.go

13. test 測試包


go test 用于測試包

usage: go test [build/test flags] [packages] [build/test flags & test binary flags]

    -c 把包編譯二進(jìn)制測試包, 注意不會運(yùn)行, 需要你手動執(zhí)行二進(jìn)制測試

        示例:

            go test -c package_import_path

            go test -c 包的導(dǎo)入路徑

            1. go test -c 在當(dāng)前目錄生成二進(jìn)制測試

            2. go test -c go test -c go-tutorials/8/examples/demo1

    -exec 運(yùn)行二進(jìn)制測試

        示例:

            go test -c -exec demo1.test

    -json 運(yùn)行測試,并將結(jié)果輸出為json格式

        示例:

            go test -json path

            1. go test -json 測試當(dāng)前包

            2. go test -json ./

    -o 把測試編譯成自己命名二進(jìn)制包, 默認(rèn)仍然會運(yùn)行測試(除非指定-c或者-i)

        示例:

            go test -o file_name

            go test -o 文件名

            1. go test -o demo1.custom_name.test

    -bench 運(yùn)行基準(zhǔn)測試, 默認(rèn)情況下不運(yùn)行

        示例:

            go test -bench regexp

            go test -bench 正則表達(dá)式

            1. go test -bench 運(yùn)行所有基準(zhǔn)測試

            2. go test -bench=. 運(yùn)行所有基準(zhǔn)測試

            3. go test -bench=hah 運(yùn)行指定的基準(zhǔn)測試

    -benchtime 基準(zhǔn)測試,持續(xù)時間(默認(rèn)1秒)



    -count 運(yùn)行測試次數(shù)

        示例:

            go test -count n

            go test -count 次數(shù)

            1. go test -count 10 運(yùn)行所有的測試10次

    -cover 覆蓋率統(tǒng)計(jì), 注意覆蓋率統(tǒng)計(jì)是通過代碼注釋來工作的

    -cpu 指定測試cpu數(shù)量

        示例:

            go test -cpu 1,2,4

            go test -cpu cpu數(shù)量

            1. go test -cpu 8 指定8個cpu

    -list regexp 列出匹配的測試

        示例:

            go test -list regexp

            go test -list 正則表達(dá)式

            1. go test -list Login 列出demo1中的測試

    -v 詳細(xì)輸出運(yùn)行時記錄所有的測試

        示例:

            go test -v

14. tool 運(yùn)行指定的go工具


tool 命令 運(yùn)行指定的go工具

usage: go tool [-n] command [args...]

用法: go tool [-n] 命令 [args...]

可選參數(shù):

    -n 打印要執(zhí)行的命令, 但是不真正的執(zhí)行

示例:

# 打印vet工具執(zhí)行的命令

go tool -n vet

** go tool 工具列表 **


# go tool: 列表工具列表

# go tool 工具 -h: 查看工具幫助文檔

# 查看vet工具幫助文檔: go tool vet -h

addr2line

api

asm

buildid

cgo

compile

cover

dist

doc

fix

link

nm

objdump

pack

pprof 可以幫助開發(fā)者快速分析及定位各種性能問題,如 CPU 消耗、內(nèi)存分配及阻塞分析

test2json

trace

vet 報告包中可能出現(xiàn)的錯誤,開發(fā)時建議使用這個工具(fmt printf函數(shù)參數(shù)不對或者聲明結(jié)構(gòu)體 tag聲明不對等)

15. version 查看當(dāng)前go語言版本


version 查看go當(dāng)前的版本

usage: go version

示例:

# 查看go當(dāng)前的版本

go version

16. vet 報告包中可能出現(xiàn)的錯誤


vet 靜態(tài)檢查工具,報告包中可能出現(xiàn)的錯誤, 開發(fā)時建議使用這個工具(fmt printf函數(shù)參數(shù)不對或者聲明結(jié)構(gòu)體 tag聲明不對等)

usage: go vet [-n] [-x] [build flags] [vet flags] [packages]

用法: go vet [-n] [-x] [編譯參數(shù)] [vet flags] [包]

可選參數(shù):

    -n 打印要執(zhí)行的命令, 但是不真正的執(zhí)行

    -x 打印執(zhí)行的命令

更多參數(shù)請參考(go help build)

示例:

# 檢測 testmod 包中可能存在的問題

go vet testmod

分享到:
標(biāo)簽:golang
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定