當前位置: 首頁>>編程語言>>正文


Go語言教程:命令行標識

返回Go語言教程首頁

概念簡介

命令行標識
是命令行程序指定選項的常用方式。例如,在 `wc -l` 中,
這個 `-l` 就是一個命令行標識。

例程代碼


package main

// Go 提供了一個 `flag` 包,支持基本的命令行標誌解析。
// 我們將用這個包來實現我們的命令行程序示例。
import "flag"
import "fmt"

func main() {

    // 基本的標記聲明僅支持字符串、整數和布爾值選項。
    // 這裏我們聲明一個默認值為 `"foo"` 的字符串標誌 `word`
    // 並帶有一個簡短的描述。這裏的 `flag.String` 函數返回一個字
    // 符串指針(不是一個字符串值),在下麵我們會看到是如何
    // 使用這個指針的。
    wordPtr := flag.String("word", "foo", "a string")

    // 使用和聲明 `word` 標誌相同的方法來聲明 `numb` 和 `fork` 標誌。
    numbPtr := flag.Int("numb", 42, "an int")
    boolPtr := flag.Bool("fork", false, "a bool")

    // 用程序中已有的參數來聲明一個標誌也是可以的。注
    // 意在標誌聲明函數中需要使用該參數的指針。
    var svar string
    flag.StringVar(&svar, "svar", "bar", "a string var")

    // 所有標誌都聲明完成以後,調用 `flag.Parse()` 來執行
    // 命令行解析。
    flag.Parse()

    // 這裏我們將僅輸出解析的選項以及後麵的位置參數。注意,
    // 我們需要使用類似 `*wordPtr` 這樣的語法來對指針解引用,從而
    // 得到選項的實際值。
    fmt.Println("word:", *wordPtr)
    fmt.Println("numb:", *numbPtr)
    fmt.Println("fork:", *boolPtr)
    fmt.Println("svar:", svar)
    fmt.Println("tail:", flag.Args())
}

執行&輸出


# 測試這個程序前,最好將這個程序編譯成二進製文件,然後再運
# 行這個程序。
$ go build command-line-flags.go

word: opt
numb: 7
fork: true
svar: flag
tail: []

# 注意到,如果你省略一個標誌,那麽這個標誌的值自動的設
# 定為他的默認值。
$ ./command-line-flags -word=opt
word: opt
numb: 42
fork: false
svar: bar
tail: []

# 尾隨的位置參數可以出現在任何標誌後麵。
$ ./command-line-flags -word=opt a1 a2 a3
word: opt
...
tail: [a1 a2 a3]

# 注意,`flag` 包需要所有的標誌出現位置參數之前(
# 否則,這個標誌將會被解析為位置參數)。
$ ./command-line-flags -word=opt a1 a2 a3 -numb=7
word: opt
numb: 42
fork: false
svar: bar
trailing: [a1 a2 a3 -numb=7]

# 使用 `-h` 或者 `--help` 標誌來得到自動生成的這個命
# 令行程序的幫助文本。
$ ./command-line-flags -h
Usage of ./command-line-flags:
  -fork=false: a bool
  -numb=42: an int
  -svar="bar": a string var
  -word="foo": a string

# 如果你提供一個沒有使用 `flag` 包指定的標誌,程序會輸出一
# 個錯誤信息,並再次顯示幫助文本。
$ ./command-line-flags -wat
flag provided but not defined: -wat
Usage of ./command-line-flags:
...

# 後麵,我們將會看一下環境變量,另一個用於參數化程序的基本方式。

課程導航

學習上一篇:Go語言教程:命令行參數    學習下一篇:Go語言教程:環境變量

相關資料

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/command-line-flags

Go語言命令行標識

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3988.html,未經允許,請勿轉載。