1. 程式人生 > >Go_16:GoLang中flag標簽使用

Go_16:GoLang中flag標簽使用

span clas 格式化 print mes 初始 div fun sta

  直接上代碼,在代碼中會做詳細的解釋,當前運行環境為:Go-1.8.1

package main

import (
    "flag"
    "log"
    "os"
)

func usage() {
    log.Fatalf("Usage: myProgram [-s server] [-t isShowTimeStamps] <subject> \n")
}

func printMsg(message string) {
    log.Printf("Received message is : %s \n", 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) }

Go_16:GoLang中flag標簽使用