[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 언어에서 플래그를 처리하는 다양한 방법들을 살펴보았습니다. 효율적인 플래그 관리는 코드의 가독성과 유지보수성을 높이는 데 기여할 수 있습니다.
참고문헌:
- https://golang.org/pkg/flag/
- https://gobyexample.com/command-line-flags