[go] go 언어에서의 플래그 관리 방법

Go 언어에서는 flag 패키지를 사용하여 명령줄 인수를 구문 분석하고 관리할 수 있습니다. flag 패키지는 표준 라이브러리에 포함되어 있어 별도의 설치가 필요하지 않습니다.

기본적인 플래그 사용

다음 예제는 기본적인 플래그 사용 방법을 보여줍니다.

package main

import (
	"flag"
	"fmt"
)

func main() {
	wordPtr := flag.String("word", "hello", "a string")
	numbPtr := flag.Int("numb", 42, "an int")
	boolPtr := flag.Bool("fork", false, "a bool")

	flag.Parse()

	fmt.Println("word:", *wordPtr)
	fmt.Println("numb:", *numbPtr)
	fmt.Println("fork:", *boolPtr)
	fmt.Println("tail:", flag.Args())
}

위 예제에서 flag.String, flag.Int, flag.Bool 함수를 사용하여 플래그를 정의하고, flag.Parse()를 호출하여 명령줄 인수를 구문 분석합니다. 플래그 값을 사용하기 위해서는 *를 통해 포인터를 참조해야 합니다.

사용자 정의 타입을 플래그로 사용

사용자 정의 타입을 플래그로 사용하기 위해서는 flag.Value 인터페이스를 구현해야 합니다. 다음 예제는 사용자 정의 타입을 플래그로 사용하는 방법을 보여줍니다.

package main

import (
	"flag"
	"fmt"
)

type customType string

func (c *customType) Set(value string) error {
	*c = customType("custom-" + value)
	return nil
}

func (c customType) String() string {
	return string(c)
}

func main() {
	var customVar customType
	flag.Var(&customVar, "custom", "a custom type")

	flag.Parse()

	fmt.Println("custom type:", customVar)
}

위 예제에서 flag.Var 함수를 사용하여 사용자 정의 타입을 플래그로 등록하고, Set 메서드와 String 메서드를 구현하여 해당 타입을 플래그 값으로 사용합니다.

위와 같이 flag 패키지를 사용하여 명령줄 인수를 처리하고 관리하는 방법을 통해 Go 언어에서 손쉽게 효율적인 명령줄 도구를 개발할 수 있습니다.

자세한 내용은 공식 문서를 참고하세요.