好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解如何在Go項目中輸出版本信息

詳解如何在Go項目中輸出版本信息

熱門標簽:福州鐵通自動外呼系統(tǒng) 智能電銷機器人營銷 長沙ai機器人電銷 賺地圖標注的錢犯法嗎 廣東語音外呼系統(tǒng)供應商 烏魯木齊人工電銷機器人系統(tǒng) 濮陽自動外呼系統(tǒng)代理 地圖標注測試 澳門防封電銷卡

我們經(jīng)常在使用CLI工具的時候,都會有這樣的參數(shù)輸出:

➜ ~ docker version
Client: Docker Engine - Community
 Version:   18.09.2
 API version:  1.39
 Go version:  go1.10.8
 Git commit:  6247962
 Built:    Sun Feb 10 04:12:39 2019
 OS/Arch:   darwin/amd64
 Experimental:  false
➜ ~

可以打印出構建時對應的版本信息,比如 Version,Go Version,Git Commit等,這個是如何實現(xiàn)的呢?

實現(xiàn)

主要是通過ldflags參數(shù)來實現(xiàn)在構建的時候對變量進行賦值。

比如下面一段代碼:

package main

import (
 "flag"
 "fmt"
 "os"
)

//需要賦值的變量
var version = ""

//通過flag包設置-version參數(shù)
var printVersion bool

func init() {
 flag.BoolVar(printVersion, "version", false, "print program build version")
 flag.Parse()
}

func main() {
 if printVersion {
  println(version)
  os.Exit(0)
 }
 fmt.Printf("example for print version")
}

構建命令:

go build -ldflags "-X main.version=v0.1" -o example

程序輸出:

➜ ./example
version=v0.1

參數(shù)說明

1、-ldflags build命令中用于調用接鏈接器的參數(shù)

-ldflags '[pattern=]arg list'
 arguments to pass on each go tool link invocation.

2、-X 鏈接器參數(shù),主要用于設置變量

-X importpath.name=value
 Set the value of the string variable in importpath named name to value.
 Note that before Go 1.5 this option took two separate arguments.
 Now it takes one argument split on the first = sign.

一個完整的例子

這里將version包單獨做了一個包存放,只需要引入即可:

package main

import (
  "flag"

  "github.com/go-demo/version"
)

//通過flag包設置-version參數(shù)
var printVersion bool

func init() {
  flag.BoolVar(printVersion, "version", false, "print program build version")
  flag.Parse()
}

func main() {
  if printVersion {
    version.PrintVersion()
  }
}

構建的shell如下(也可以放在Makefile中):

#!/bin/sh
version="v0.1"
path="github.com/go-demo/version"
flags="-X $path.Version=$version -X '$path.GoVersion=$(go version)' -X '$path.BuildTime=`date +"%Y-%m-%d %H:%m:%S"`' -X $path.GitCommit=`git rev-parse HEAD`"
go build -ldflags "$flags" -o example example-version.go

TIPS: 如果值內容中含有空格,可以用單引號

最終版本輸出:

➜ sh build.sh
➜ ./example -version
Version: v0.1
Go Version: go version go1.13.1 darwin/amd64
Git Commit: a775ecd27c5e78437b605c438905e9cc888fbc1c
Build Time: 2020-01-09 19:01:51

完整代碼:https://github.com/go-demo/version

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 在Golang代碼中如何自動生成版本號的方法示例
  • golang如何實現(xiàn)mapreduce單進程版本詳解
  • 使用 Go 管理版本的方法示例
  • 淺析Go語言版本的forgery

標簽:阿克蘇 慶陽 調研邀請 德州 西雙版納 貴陽 廣西 太原

巨人網(wǎng)絡通訊聲明:本文標題《詳解如何在Go項目中輸出版本信息》,本文關鍵詞  詳解,如,何在,項,目中,輸出,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解如何在Go項目中輸出版本信息》相關的同類信息!
  • 本頁收集關于詳解如何在Go項目中輸出版本信息的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 老湿地福利院体验| 白丝护士喷浆视频| 男男H开荤粗肉H文1v1| 国产AV一区二区三区在线观看| 好硬好湿好爽再深一点app| 久久99久久99精品免费看小说 | 日本人视频jizz4| 漂亮的岳坶1中文字幕| 波多野结衣教师无删减电影| 把手伸到裤裆慢慢揉搓h| 国产大量情侣高清视频| 稚嫩小奶娃h文浪荡女| 他又娇又软[现代女尊]| 学长让我夹震蛋器自慰给他看| 土耳其剧拉莫在线观看第一季| 都市美艳后宫下载全部| 色综合久久五月色婷婷一区二区| 久9视频这里只有精品8| 91麻精品国产91久久最新章节 | 孕妇╳乂ⅹ孕交乂乂╳╳大白肚| 国产寡妇婬乱一级A片在线直播APP| 国产一区二| 一面膜胸一面膜下韩国| 99视频在线免费看| 午夜视频在线免费看| 337P粉嫩日本欧洲亚洲张悠雨| 午夜精品视频在线观看| 一楼一凤欧美| 小和尚初尝高h| 国产精品美女视频免费观看| babes18护士| 亚洲欧美日韩在线一区二区三区| 色777777女人色| 长腿校花的呻呤后续| 97久久精品人人槡人妻人人9 | 太爽太舒服太刺激了受不了了| 亚洲国产婷婷综合在线精品| 男人的??伸到??里| 精品国产品香蕉在线观看75| 欧美一级A片在免费看| 久久综合九色综合欧洲色|