2021年6月19日 星期六

Go 語言取得命令列參數

[cmd_arg.go 內容]
package main

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

func main() {
    //取得命令列參數(變數為指標)
    varAA := flag.String("aa", "ABC", "字串參數")
    varBB := flag.Int("bb", 123, "整數參數")
    varCC := flag.Bool("cc", false, "布林值參數")
    //取得命令列參數(將現有變數,設定為接收為參數)
    var varDD string
    flag.StringVar(&varDD, "dd", "DEF", "字串參數")

    flag.Parse()

    fmt.Println("aa:", *varAA)
    fmt.Println("bb:", *varBB)
    fmt.Println("cc:", *varCC)
    fmt.Println("dd:", varDD)
    fmt.Println("不在規定內,其他形式的參數:", flag.Args())
    fmt.Println("另一個方式,使用os.Args取得參數陣列 os.Args   :", os.Args)
    fmt.Println("另一個方式,使用os.Args取得參數陣列 os.Args[0]:", os.Args[0])
    if len(os.Args) > 1 {
        fmt.Println("另一個方式,使用os.Args取得參數陣列 os.Args[1]:", os.Args[1])
    }
}


[結果]
D:\Go>go build cmd_arg.go

D:\Go>cmd_arg -h
Usage of cmd_arg:
  -aa string
        字串參數 (default "ABC")
  -bb int
        整數參數 (default 123)  
  -cc
        布林值參數
  -dd string
        字串參數 (default "DEF")

D:\Go>cmd_arg
aa: ABC
bb: 123
cc: false
dd: DEF
不在規定內,其他形式的參數: []
另一個方式,使用os.Args取得參數陣列 os.Args   : [cmd_arg]
另一個方式,使用os.Args取得參數陣列 os.Args[0]: cmd_arg

D:\Go>cmd_arg -bb=99 -dd=XYZ ww xx dfs
aa: ABC
bb: 99
cc: false
dd: XYZ
不在規定內,其他形式的參數: [ww xx dfs]
另一個方式,使用os.Args取得參數陣列 os.Args   : [cmd_arg -bb=99 -dd=XYZ ww xx dfs]
另一個方式,使用os.Args取得參數陣列 os.Args[0]: cmd_arg
另一個方式,使用os.Args取得參數陣列 os.Args[1]: -bb=99

D:\Go>cmd_arg -bb=99 -dd=XYZ ww xx dfs
aa: ABC
bb: 99
cc: false
dd: XYZ
不在規定內,其他形式的參數: [ww xx dfs]
另一個方式,使用os.Args取得參數陣列 os.Args   : [cmd_arg -bb=99 -dd=XYZ ww xx dfs]
另一個方式,使用os.Args取得參數陣列 os.Args[0]: cmd_arg
另一個方式,使用os.Args取得參數陣列 os.Args[1]: -bb=99

D:\Go>cmd_arg -bb 99 -dd XYZ ww xx dfs
aa: ABC
bb: 99
cc: false
dd: XYZ
不在規定內,其他形式的參數: [ww xx dfs]
另一個方式,使用os.Args取得參數陣列 os.Args   : [cmd_arg -bb 99 -dd XYZ ww xx dfs]
另一個方式,使用os.Args取得參數陣列 os.Args[0]: cmd_arg
另一個方式,使用os.Args取得參數陣列 os.Args[1]: -bb





參考:


沒有留言:

張貼留言