Go에서 만들어진 실행 파일을 실행할 때, 명령줄에 입력한 플래그 값을 쉽게 얻기 위해 제공하는 flag 패키지 사용에 대한 코드를 정리해 봅니다. 아래의 코드는 플래그로써 word, numb, fork에 값을 지정하고자 하는 경우입니다. word는 문자열, numb는 정수형, fork는 블린형으로 지정합니다.
package main import ( "flag" "fmt" ) func main() { wordPtr := flag.String("word", "foo", "a string") numPtr := flag.Int("numb", 42, "an int") boolPtr := flag.Bool("fork", false, "a bool") flag.Parse() fmt.Println("word: ", *wordPtr) fmt.Println("numb: ", *numPtr) fmt.Println("fork: ", *boolPtr) fmt.Println("tail: ", flag.Args()) }
위의 프로그램을 컴파일해 실행 파일로 cmd_flag.exe가 만들어졌다고 할 때, 앞서 언급한 각 플래그에 값을 지정하여 실행한 예는 아래와 같습니다.
d:\__Working__\tstGo\cmd_flags>cmd_flags.exe -word=Hello -numb=23 -fork=true word: Hello numb: 23 fork: true tail: [] d:\__Working__\tstGo\cmd_flags>cmd_flags.exe -word="Hello World" -numb=23 -fork=true word: Hello World numb: 23 fork: true tail: [] d:\__Working__\tstGo\cmd_flags>cmd_flags.exe -word="Hello World" -numb=23 -fork=true a1 a2 a3 word: Hello World numb: 23 fork: true tail: [a1 a2 a3] d:\__Working__\tstGo\cmd_flags>cmd_flags.exe -word="Hello World" -numb=a -fork=true invalid value "a" for flag -numb: strconv.ParseInt: parsing "a": invalid syntax Usage of cmd_flags.exe: -fork a bool -numb int an int (default 42) -word string a string (default "foo") d:\__Working__\tstGo\cmd_flags>