[go] Flag 패키지의 활용 가능한 명령줄 플래그 관리 방안
Golang의 Flag 패키지는 명령줄 인수를 구문 분석하여 프로그램에 대한 입력을 처리하는데 유용한 도구입니다. Flag 패키지는 유저가 명령줄에서 값을 제공하거나, 기본값 중 하나를 이용할 수 있도록 해줍니다.
플래그 선언
Flag 패키지를 사용하기 위해서는 프로그램에서 플래그를 먼저 선언해야 합니다. 각 플래그에 대한 값을 저장할 변수를 선언하고, 그 변수의 주소를 플래그 함수에 전달해야 합니다.
import "flag"
var host = flag.String("host", "localhost", "서버 호스트명")
var port = flag.Int("port", 8080, "서버 포트 번호")
위 예제에서는 host
와 port
변수를 선언하고, 각각의 디폴트 값과 설명을 함께 플래그로 등록하고 있습니다.
플래그 파싱
flag.Parse()
를 호출하여 명령줄 옵션을 파싱해서 각 플래그 변수에 값을 저장할 수 있습니다.
func main() {
flag.Parse()
fmt.Println("호스트:", *host)
fmt.Println("포트:", *port)
}
위의 main
함수에서 flag.Parse()
를 호출한 후, 다음으로 플래그 값을 출력하고 있습니다.
사용자 지정 플래그 타입
필요에 따라 사용자 지정 플래그 타입을 정의하여 특정 형식의 값을 플래그로 사용할 수 있습니다.
import (
"flag"
"fmt"
)
type sliceValue []string
func (s *sliceValue) String() string {
return fmt.Sprintf("%v", *s)
}
func (s *sliceValue) Set(value string) error {
*s = append(*s, value)
return nil
}
func main() {
var values sliceValue
flag.Var(&values, "value", "값 목록")
flag.Parse()
fmt.Println("값 목록:", values)
}
위의 예제는 sliceValue
라는 사용자 정의 플래그 타입을 정의하고, 이를 이용하여 다중 값 옵션을 처리하는 방법을 보여주고 있습니다.
결론
Golang의 Flag 패키지를 이용하면 명령줄 플래그를 처리하는데 효과적인 방법을 제공받을 수 있습니다. 플래그를 선언하고 파싱하는 방법을 알아두면, 명령줄 인수를 처리하는 프로그램을 더 쉽게 개발할 수 있을 것입니다.
참고 문헌: