GoLang中flag标签使用
生活随笔
收集整理的這篇文章主要介紹了
GoLang中flag标签使用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
正如其他語(yǔ)言一樣,在 linux 系統(tǒng)上通過(guò)傳入不同的參數(shù)來(lái)使得代碼執(zhí)行不同邏輯實(shí)現(xiàn)不同功能,這樣的優(yōu)點(diǎn)就是執(zhí)行想要的既定邏輯而不需要修改代碼重新編譯與打包。在 Golang 語(yǔ)言中也為我們提供了相應(yīng)的功能,直接上代碼,在代碼中會(huì)做詳細(xì)的解釋,當(dāng)前運(yùn)行環(huán)境為:Go-1.8.1
package main
import (
"flag"
"log"
"os"
)
func usage() {
log.Fatalf("Usage: myProgram [-s server] [-t isShowTimeStamps] <subject>
")
}
func printMsg(message string) {
log.Printf("Received message is : %s
", message)
}
func main() {
//os.Args 提供原始命令行參數(shù)訪問功能。注意:切片中的第一個(gè)參數(shù)是該程序的路徑,并且 os.Args[1:]保存所有的的參數(shù)。
argsAll := os.Args
log.Println("argsAll: ", argsAll)
//取得對(duì)我們有意義的參數(shù)內(nèi)容
argsUseful := os.Args[1:]
log.Println("argsUseful: ", argsUseful)
/**
第一個(gè)參數(shù):設(shè)置對(duì)應(yīng)的標(biāo)簽名,可以通過(guò)該標(biāo)簽名來(lái)或得對(duì)應(yīng)值
第二個(gè)參數(shù):如果沒有設(shè)置該標(biāo)簽,則采用這個(gè)值即該值為默認(rèn)值
第三個(gè)參數(shù):這個(gè)參數(shù)為幫助信息,一般用于help調(diào)用展示
*/
var message = flag.String("s", "default message", "it's user send message[help message]")
var showTime = flag.Bool("t", false, "Display timestamps")
/**
格式化log輸入內(nèi)容,默認(rèn)為:log.LstdFlags(底層等價(jià):Ldate | Ltime), Ldate:2017/04/01 , Ltime:16:24:36,
Llongfile:全路徑+執(zhí)行文件+行數(shù), Lshortfile:執(zhí)行文件名+行數(shù),還有幾個(gè)其他不常用的,需要的話可以上官方文檔查看
這里設(shè)置的0即取消log格式化輸出,輸出的內(nèi)容和使用fmt包下的println()格式一樣
*/
//log.SetFlags(0)
log.SetFlags(log.LstdFlags)
//初始化flag包中內(nèi)置的匿名Usage函數(shù),需要賦一個(gè)函數(shù)。當(dāng)flag內(nèi)部發(fā)生異常會(huì)調(diào)用其內(nèi)部的Usage函數(shù),繼而再調(diào)用到我們自己定義的usage函數(shù)
flag.Usage = usage
//所有標(biāo)志都聲明完成以后,調(diào)用 flag.parse() 來(lái)執(zhí)行命令行解析
flag.Parse()
//用戶沒有任何參數(shù)輸入則不得向下執(zhí)行
args := flag.Args()
if len(args) < 1 {
usage()
}
log.Println("message:", *message, ", showTime:", *showTime)
printMsg(*message)
總結(jié)
以上是生活随笔為你收集整理的GoLang中flag标签使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS中的模板字符串
- 下一篇: JS进阶 | 分析JS中的异步操作