[go] go 언어에서의 플래그 관련 디자인 패턴

Go 언어에서 플래그(Flag)은 프로그램의 동작을 제어하는 데 사용되며, 명령행 인터페이스(CLI)나 환경 설정 등에 널리 활용됩니다. 이 문서에서는 Go 언어에서 플래그를 다루는 관용적인 디자인 패턴을 살펴봅니다.

1. 플래그 라이브러리 활용

Go 언어 표준 라이브러리에는 명령행 플래그를 파싱하고 가공하는데 사용할 수 있는 flag 패키지가 내장되어 있습니다. 이 패키지를 활용하여 명령행 인터페이스를 구현할 수 있습니다.

import "flag"

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

    flag.Parse()

    fmt.Println("word:", *wordPtr)
    fmt.Println("num:", *numPtr)
    fmt.Println("fork:", *boolPtr)
}

2. 환경 변수에서 플래그 값 초기화

환경 변수를 활용하여 플래그의 초기 값을 설정할 수 있습니다. 이를 통해 프로그램 환경에 따라 동작을 커스터마이징할 수 있습니다.

import "os"

func main() {
    word := os.Getenv("WORD")
    if len(word) == 0 {
        word = "hello"
    }

    fmt.Println("word:", word)
}

3. 구조체를 이용한 플래그 관리

구조체를 활용하여 관련된 플래그들을 묶을 수 있습니다. 이를 통해 인터페이스를 단순화하고 가독성을 높일 수 있습니다.

type Config struct {
    Word string
    Num  int
    Fork bool
}

위의 예제들을 통해, Go 언어에서 플래그를 처리하는 다양한 방법들을 살펴보았습니다. 효율적인 플래그 관리는 코드의 가독성과 유지보수성을 높이는 데 기여할 수 있습니다.

참고문헌: