下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第詳解如何在Go項(xiàng)目中輸出版本信息可以打印出構(gòu)建時(shí)對(duì)應(yīng)的版本信息,比如Version,GoVersion,GitCommit等,這個(gè)是如何實(shí)現(xiàn)的呢?
實(shí)現(xiàn)
主要是通過(guò)ldflags參數(shù)來(lái)實(shí)現(xiàn)在構(gòu)建的時(shí)候?qū)ψ兞窟M(jìn)行賦值。
比如下面一段代碼:
packagemain
import(
"flag"
"fmt"
"os"
//需要賦值的變量
varversion=""
//通過(guò)flag包設(shè)置-version參數(shù)
varprintVersionbool
funcinit(){
flag.BoolVar(printVersion,"version",false,"printprogrambuildversion")
flag.Parse()
funcmain(){
ifprintVersion{
println(version)
os.Exit(0)
fmt.Printf("exampleforprintversion")
構(gòu)建命令:
gobuild-ldflags"-Xmain.version=v0.1"-oexample
程序輸出:
./example
version=v0.1
參數(shù)說(shuō)明
1、-ldflagsbuild命令中用于調(diào)用接鏈接器的參數(shù)
-ldflags'[pattern=]arglist'
argumentstopassoneachgotoollinkinvocation.
2、-X鏈接器參數(shù),主要用于設(shè)置變量
-X=value
Setthevalueofthestringvariableinimportpathnamednametovalue.
NotethatbeforeGo1.5thisoptiontooktwoseparatearguments.
Nowittakesoneargumentsplitonthefirst=sign.
一個(gè)完整的例子
這里將version包單獨(dú)做了一個(gè)包存放,只需要引入即可:
packagemain
import(
"flag"
"/go-demo/version"
//通過(guò)flag包設(shè)置-version參數(shù)
varprintVersionbool
funcinit(){
flag.BoolVar(printVersion,"version",false,"printprogrambuildversion")
flag.Parse()
funcmain(){
ifprintVersion{
version.PrintVersion()
構(gòu)建的shell如下(也可以放在Makefile中):
#!/bin/sh
version="v0.1"
path="/go-demo/version"
flags="-X$path.Version=$version-X'$path.GoVersion=$(goversion)'-X'$path.BuildTime=`date+"%Y-%m-%d%H:%m:%S"`'-X$path.GitCommit=`gitrev-parseHEAD`"
gobuild-ldflags"$flags"-oexampleexample-version.go
TIPS:如果值內(nèi)容中含有空格,可以用單引號(hào)
最終版本輸出:
shbuild.sh
./example-version
Version:v0.1
GoVersion:goversiongo1.13.1darwin/amd64
GitCommit:a775ecd27c5e78437b605c438905e9cc888fbc1c
Bui
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 發(fā)型沙龍活動(dòng)策劃方案(3篇)
- 高層綜合施工方案(3篇)
- 大廳下沉施工方案(3篇)
- 外套店鋪活動(dòng)策劃方案(3篇)
- 土方施工方案大綱(3篇)
- 電廠化學(xué)專業(yè)培訓(xùn)
- 2025年大學(xué)汽車電子(汽車電子技術(shù))試題及答案
- 2025年大學(xué)市場(chǎng)營(yíng)銷(網(wǎng)絡(luò)營(yíng)銷基礎(chǔ))試題及答案
- 2025年高職(水利水電建筑工程)水工混凝土結(jié)構(gòu)施工階段測(cè)試試題及答案
- 2026上半年二級(jí)建造師(建筑工程施工管理)真題解析
- 2025年六年級(jí)上冊(cè)道德與法治期末測(cè)試卷附答案(完整版)
- 雨課堂在線學(xué)堂《西方哲學(xué)-從古希臘哲學(xué)到晚近歐陸哲學(xué)》單元考核測(cè)試答案
- 學(xué)堂在線 雨課堂 學(xué)堂云 研究生學(xué)術(shù)與職業(yè)素養(yǎng)講座 章節(jié)測(cè)試答案
- 路面工程試驗(yàn)檢測(cè)-路面基層底基層試驗(yàn)檢測(cè)
- 文旅項(xiàng)目立項(xiàng)報(bào)告
- 生理學(xué)期中考試試題及答案
- 京張高鐵現(xiàn)場(chǎng)觀摩會(huì)整體策劃方案
- 安捷倫1200標(biāo)準(zhǔn)操作規(guī)程
- 合伙人合同協(xié)議書電子版
- 離婚協(xié)議書下載電子版完整離婚協(xié)議書下載三篇
- 磨床設(shè)備點(diǎn)檢表
評(píng)論
0/150
提交評(píng)論