ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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타입 이외의 다른 타입으로도 값들을 저장할 수 있습니다. 

    댓글