GoLang中flag标签使用
生活随笔
收集整理的這篇文章主要介紹了
GoLang中flag标签使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正如其他語言一樣,在 linux 系統上通過傳入不同的參數來使得代碼執行不同邏輯實現不同功能,這樣的優點就是執行想要的既定邏輯而不需要修改代碼重新編譯與打包。在 Golang 語言中也為我們提供了相應的功能,直接上代碼,在代碼中會做詳細的解釋,當前運行環境為: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 提供原始命令行參數訪問功能。注意:切片中的第一個參數是該程序的路徑,并且 os.Args[1:]保存所有的的參數。
argsAll := os.Args
log.Println("argsAll: ", argsAll)
//取得對我們有意義的參數內容
argsUseful := os.Args[1:]
log.Println("argsUseful: ", argsUseful)
/**
第一個參數:設置對應的標簽名,可以通過該標簽名來或得對應值
第二個參數:如果沒有設置該標簽,則采用這個值即該值為默認值
第三個參數:這個參數為幫助信息,一般用于help調用展示
*/
var message = flag.String("s", "default message", "it's user send message[help message]")
var showTime = flag.Bool("t", false, "Display timestamps")
/**
格式化log輸入內容,默認為:log.LstdFlags(底層等價:Ldate | Ltime), Ldate:2017/04/01 , Ltime:16:24:36,
Llongfile:全路徑+執行文件+行數, Lshortfile:執行文件名+行數,還有幾個其他不常用的,需要的話可以上官方文檔查看
這里設置的0即取消log格式化輸出,輸出的內容和使用fmt包下的println()格式一樣
*/
//log.SetFlags(0)
log.SetFlags(log.LstdFlags)
//初始化flag包中內置的匿名Usage函數,需要賦一個函數。當flag內部發生異常會調用其內部的Usage函數,繼而再調用到我們自己定義的usage函數
flag.Usage = usage
//所有標志都聲明完成以后,調用 flag.parse() 來執行命令行解析
flag.Parse()
//用戶沒有任何參數輸入則不得向下執行
args := flag.Args()
if len(args) < 1 {
usage()
}
log.Println("message:", *message, ", showTime:", *showTime)
printMsg(*message)
總結
以上是生活随笔為你收集整理的GoLang中flag标签使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS中的模板字符串
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?