日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Go开发 之 Go的 9个 基本命令

發(fā)布時(shí)間:2024/3/26 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go开发 之 Go的 9个 基本命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1、go build命令(編譯命令)
    • 1.1、go build 無(wú)參數(shù)編譯
    • 1.2、go build 參數(shù)設(shè)置
    • 1.3、示例
  • 2、go clean命令(清除編譯文件)
    • 2.1、參數(shù)
    • 2.2、示例
  • 3、go run命令(編譯并運(yùn)行)
    • 3.1、參數(shù)
    • 3.2、示例
  • 4、go fmt命令(格式化代碼文件)
    • 4.1、參數(shù)
    • 4.2、示例
  • 5、go install命令(編譯并安裝)
    • 5.1、參數(shù)
    • 5.2、示例
  • 6、go get命令(一鍵獲取包、編譯并安裝)
    • 6.1、參數(shù)
    • 6.2、示例
  • 7、go generate命令(在編譯前自動(dòng)化生成某類(lèi)代碼)
    • 7.1、參數(shù)
    • 7.2、示例
  • 8、go test命令(測(cè)試命令)
  • 9、go pprof命令(性能分析命令)

1、go build命令(編譯命令)

1.1、go build 無(wú)參數(shù)編譯

// 編譯,生成可執(zhí)行文件 go build ***.go// 運(yùn)行可執(zhí)行文件,windows上會(huì)加上exe,linux沒(méi)有后綴 ./可執(zhí)行文件// go build+文件列表,會(huì)生成多個(gè)可執(zhí)行文件 go build ***.go ***.go ……

1.2、go build 參數(shù)設(shè)置

參數(shù)備注
-o編譯的包名
-v編譯時(shí)顯示包名
-p n開(kāi)啟并發(fā)編譯,默認(rèn)情況下該值為 CPU 邏輯核數(shù)
-a強(qiáng)制重新構(gòu)建
-n打印編譯時(shí)會(huì)用到的所有命令,但不真正執(zhí)行
-x打印編譯時(shí)會(huì)用到的所有命令
-race開(kāi)啟競(jìng)態(tài)檢測(cè)

1.3、示例

2、go clean命令(清除編譯文件)

2.1、參數(shù)

go clean 命令是用來(lái)移除當(dāng)前源碼包和關(guān)聯(lián)源碼包里面編譯生成的文件。這些文件包括:

  • _obj/ 舊的 object 目錄,由 Makefiles 遺留
  • _test/ 舊的 test 目錄,由 Makefiles 遺留
  • _testmain.go 舊的 gotest 文件,由M akefiles 遺留
  • test.out 舊的 test 記錄,由 Makefiles 遺留
  • build.out 舊的 test 記錄,由 Makefiles 遺留
  • *.[568ao] object 文件,由 Makefiles 遺留
  • DIR(.exe) 由 go build 產(chǎn)生
  • DIR.test(.exe) 由 go test -c 產(chǎn)生
  • MAINFILE(.exe) 由 go build MAINFILE.go 產(chǎn)生
  • *.so 由 SWIG 產(chǎn)生

參數(shù)介紹

  • -i 清除關(guān)聯(lián)的安裝的包和可運(yùn)行文件,也就是通過(guò) go install 安裝的文件
  • -n 把需要執(zhí)行的清除命令打印出來(lái),但是不執(zhí)行,這樣就可以很容易的知道底層是如何運(yùn)行的
  • -r 循環(huán)的清除在 import 中引入的包
  • -x 打印出來(lái)執(zhí)行的詳細(xì)命令,其實(shí)就是 -n 打印的執(zhí)行版本

一般都是利用這個(gè)命令清除編譯文件,然后 github 遞交源碼,在本機(jī)測(cè)試的時(shí)候這些編譯文件都是和系統(tǒng)相關(guān)的,但是對(duì)于源碼管理來(lái)說(shuō)沒(méi)必要。

go clean -i -ncd /Users/astaxie/develop/gopath/src/mathapp rm -f mathapp mathapp.exe mathapp.test mathapp.test.exe app app.exe rm -f /Users/astaxie/develop/gopath/bin/mathapp

2.2、示例

3、go run命令(編譯并運(yùn)行)

3.1、參數(shù)

go run 命令會(huì)編譯源碼,并且直接執(zhí)行源碼的 main() 函數(shù),不會(huì)在當(dāng)前目錄留下可執(zhí)行文件。

go run 不能使用“go run+包”的方式進(jìn)行編譯,如需快速編譯運(yùn)行包,需要使用如下步驟來(lái)代替:

  • 使用 go build 生成可執(zhí)行文件。
  • 運(yùn)行可執(zhí)行文件。

3.2、示例

4、go fmt命令(格式化代碼文件)

4.1、參數(shù)

為了減少浪費(fèi)在排版上的時(shí)間,go 工具集中提供了一個(gè) go fmt 命令它可以幫你格式化你寫(xiě)好的代碼文件,使你寫(xiě)代碼的時(shí)候不需要關(guān)心格式,只需要在寫(xiě)完之后執(zhí)行g(shù)o fmt <文件名>.go ,代碼就會(huì)被修改成了標(biāo)準(zhǔn)格式。

gofmt -w -l src,可以格式化整個(gè)項(xiàng)目。所以 go fmt 是 gofmt 的上層一個(gè)包裝的命令。

參數(shù)介紹

  • -l 顯示那些需要格式化的文件
  • -w 把改寫(xiě)后的內(nèi)容直接寫(xiě)入到文件中,而不是作為結(jié)果打印到標(biāo)準(zhǔn)輸出。
  • -r 添加形如“a[b:len(a)] -> a[b:]”的重寫(xiě)規(guī)則,方便我們做批量替換
  • -s 簡(jiǎn)化文件中的代碼
  • -d 顯示格式化前后的 diff 而不是寫(xiě)入文件,默認(rèn)是 false
  • -e 打印所有的語(yǔ)法錯(cuò)誤到標(biāo)準(zhǔn)輸出。如果不使用此標(biāo)記,則只會(huì)打印不同行的前 10 個(gè)錯(cuò)誤。
  • -cpuprofile 支持調(diào)試模式,寫(xiě)入相應(yīng)的 cpufile 到指定的文件

4.2、示例

5、go install命令(編譯并安裝)

5.1、參數(shù)

go install 只是將編譯的中間文件放在 GOPATH 的 pkg 目錄下,以及固定地將編譯結(jié)果放在 GOPATH 的 bin 目錄下。這個(gè)命令在內(nèi)部實(shí)際上分成了兩步操作:

  • 第1步是生成結(jié)果文件(可執(zhí)行文件或者 .a 包),
  • 第2步會(huì)把編譯好的結(jié)果移到 $GOPATH/pkg 或者 $GOPATH/bin。

go install 的編譯過(guò)程有如下規(guī)律:

  • go install 是建立在 GOPATH 上的,無(wú)法在獨(dú)立的目錄里使用 go install。
  • GOPATH 下的 bin 目錄放置的是使用 go install 生成的可執(zhí)行文件,可執(zhí)行文件的名稱(chēng)來(lái)自于編譯時(shí)的包名。
  • go install 輸出目錄始終為 GOPATH 下的 bin 目錄,無(wú)法使用-o附加參數(shù)進(jìn)行自定義。
  • GOPATH 下的 pkg 目錄放置的是編譯期間的中間文件。

5.2、示例


go install 會(huì)在GOPATH的bin目錄下生成對(duì)應(yīng)的可執(zhí)行文件

6、go get命令(一鍵獲取包、編譯并安裝)

6.1、參數(shù)

golang.org在國(guó)內(nèi)由于一些眾所周知的原因無(wú)法直接訪問(wèn),因?yàn)間olang.org被墻的原因,可以使用github.com/golang/tools 和 golang.org/x/tools 是一樣的,下載后復(fù)制到golang.org中。
都可以用:

go get -u + 遠(yuǎn)程包

參數(shù)介紹:

  • -d 只下載不安裝
  • -f 只有在你包含了 -u 參數(shù)的時(shí)候才有效,不讓 -u 去驗(yàn)證 import 中的每一個(gè)都已經(jīng)獲取了,這對(duì)于本地 fork 的包特別有用
  • -fix 在獲取源碼之后先運(yùn)行fix,然后再去做其他的事情
  • -t 同時(shí)也下載需要為運(yùn)行測(cè)試所需要的包
  • -u 強(qiáng)制使用網(wǎng)絡(luò)去更新包和它的依賴(lài)包
  • -v 顯示執(zhí)行的命令

6.2、示例

7、go generate命令(在編譯前自動(dòng)化生成某類(lèi)代碼)

7.1、參數(shù)

go generate 命令是從 Go1.4 開(kāi)始設(shè)計(jì)的,用于在編譯前自動(dòng)化生成某類(lèi)代碼。
go generate 和 go build 是完全不一樣的命令,通過(guò)分析源碼中特殊的注釋,然后執(zhí)行相應(yīng)的命令。

//go:generate command arg1 arg2

這樣在同一個(gè)目錄下執(zhí)行命令go generate就會(huì)自動(dòng)運(yùn)行命令command arg1 arg2。command可以是在PATH中的任何命令,應(yīng)用非常廣泛。

有幾點(diǎn)需要注意:

  • 該特殊注釋必須在 .go 源碼文件中。
  • 每個(gè)源碼文件可以包含多個(gè) generate 特殊注釋時(shí)。
  • 顯示運(yùn)行 go generate 命令時(shí),才會(huì)執(zhí)行特殊注釋后面的命令。
  • 命令串行執(zhí)行的,如果出錯(cuò),就終止后面的執(zhí)行。
  • 特殊注釋必須以"//go:generate"開(kāi)頭,雙斜線后面沒(méi)有空格。

7.2、示例

8、go test命令(測(cè)試命令)

go test 命令,會(huì)自動(dòng)讀取源碼目錄下面名為 *_test.go 的文件,生成并運(yùn)行測(cè)試用的可執(zhí)行文件。

主要提供“單元測(cè)試”和“基準(zhǔn)測(cè)試”兩種方案

  • 單元測(cè)試——測(cè)試和驗(yàn)證代碼的框架
    – 1) 單元測(cè)試命令行
    – 2) 運(yùn)行指定單元測(cè)試用例
    – 3) 標(biāo)記單元測(cè)試結(jié)果
    – 4) 單元測(cè)試日志

  • 基準(zhǔn)測(cè)試——獲得代碼內(nèi)存占用和運(yùn)行效率的性能數(shù)據(jù)
    – 1) 基礎(chǔ)測(cè)試基本使用
    – 2) 基準(zhǔn)測(cè)試原理
    – 3) 自定義測(cè)試時(shí)間
    – 4) 測(cè)試內(nèi)存
    – 5) 控制計(jì)時(shí)器

9、go pprof命令(性能分析命令)

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

性能分析首先需要使用 runtime.pprof 包嵌入到待分析程序的入口和結(jié)束處。runtime.pprof 包在運(yùn)行時(shí)對(duì)程序進(jìn)行每秒 100 次的采樣,最少采樣 1 秒。然后將生成的數(shù)據(jù)輸出,讓開(kāi)發(fā)者寫(xiě)入文件或者其他媒介上進(jìn)行分析。

go pprof 工具鏈配合 Graphviz 圖形化工具可以將 runtime.pprof 包生成的數(shù)據(jù)轉(zhuǎn)換為 PDF 格式,以圖片的方式展示程序的性能分析結(jié)果。

  • 安裝第三方圖形化顯式分析數(shù)據(jù)工具(Graphviz)
yum install graphiviz
  • 安裝第三方性能分析來(lái)分析代碼包
go get github.com/pkg/profile

總結(jié)

以上是生活随笔為你收集整理的Go开发 之 Go的 9个 基本命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。