-
[Golang] Command line arguments 사용하기 (인자값 사용하기)언어/Golang 2016. 12. 1. 14:35
go를 실행할 때 사용자임의로 인자값을 추가하여 실행할 수 있습니다. go에서 이러한 인자값을 받아서 처리하고자 할 때, 다음과 같이 실시합니다.
package main import ( "os" "strings" ) func main() string{ var argu string for _, v := range os.Args { // 커맨드라인으로 받은 한 줄의 명령어를 스페이스바 단위로 쪼개어 반복문 실행. if strings.Index(v, "-com") == 0 { // -com이라는 값이 있으면 아래와 같이 사용자가 원하는 값 이외의 값을 제거 argu = strings.Replace(v, "-com=", "",-1) break } } fmt.Println(argu) } # 실행 go run test.go -com=test # 결과 test
하지만 위처럼 받은 인자값을 일일이 처리하기가 불편합니다. 그래서 go에서는 flag라는 패키지를 제공하고 있습니다.
아래는 flag 패키지를 사용해서 받은 인자값을 처리하는 코드입니다.
package main import ( "flag" "fmt" ) func main() { // 옵션명, 기본값, 설명 zipcode := flag.String("zipcode", "", "주소") // 명령줄 옵션을 받은 뒤 문자열로 저장 release := flag.Bool("release", false, "boolean") // 명령줄 옵션을 받은 뒤 불로 저장 flag.Parse() // 명령줄 옵션의 내용을 각 자료형별로 분석 if flag.NFlag() == 0 { // 명령줄 옵션의 개수가 0개이면 flag.Usage() // 명령줄 옵션 기본 사용법 출력 return } fmt.Printf( "주소: %s\n", *zipcode, // 포인터이므로 값을 꺼낼 때는 역참조 사용 ) // 명령줄 옵션으로 받은 값을 출력 if *release == true { fmt.Println("boolean: 참") } else { fmt.Println("boolean: 거짓") } } # 실행 go run testgo.go -zipcode=1nr1r3on -release=true # 결과 주소: 1nr1r3on boolean: 참
위처럼 옵션명, 기본값, 설명로 설정하고 string, boolean타입 이외의 다른 타입으로도 값들을 저장할 수 있습니다.