[go] Flag 패키지의 활용 가능한 명령줄 플래그 관리 방안

Golang의 Flag 패키지는 명령줄 인수를 구문 분석하여 프로그램에 대한 입력을 처리하는데 유용한 도구입니다. Flag 패키지는 유저가 명령줄에서 값을 제공하거나, 기본값 중 하나를 이용할 수 있도록 해줍니다.

플래그 선언

Flag 패키지를 사용하기 위해서는 프로그램에서 플래그를 먼저 선언해야 합니다. 각 플래그에 대한 값을 저장할 변수를 선언하고, 그 변수의 주소를 플래그 함수에 전달해야 합니다.

import "flag"

var host = flag.String("host", "localhost", "서버 호스트명")
var port = flag.Int("port", 8080, "서버 포트 번호")

위 예제에서는 hostport 변수를 선언하고, 각각의 디폴트 값과 설명을 함께 플래그로 등록하고 있습니다.

플래그 파싱

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 패키지를 이용하면 명령줄 플래그를 처리하는데 효과적인 방법을 제공받을 수 있습니다. 플래그를 선언하고 파싱하는 방법을 알아두면, 명령줄 인수를 처리하는 프로그램을 더 쉽게 개발할 수 있을 것입니다.

참고 문헌: