[go] go 언어에서의 flag/varflag 패키지의 기능 확장

go 언어에서 flag 패키지는 명령행 인자를 해석하기 위한 표준 라이브러리이다. 하지만 가끔은 명령행 인자가 아닌 다른 소스로부터 설정값을 읽어야 할 때가 있다. varflag 패키지를 사용하면 flag 패키지의 기능을 확장할 수 있다.

varflag 패키지

varflag 패키지는 flag 패키지에 기반해서 프로그램 초기화를 위한 다른 소스로부터 설정값을 가져오는 기능을 제공한다.

가령, 환경 변수, 설정 파일, 데이터베이스, 혹은 다른 외부 설정 소스로부터 가져온 설정값을 프로그램에 쉽게 적용할 수 있다.

예제 코드

다음은 varflag 패키지를 사용하여 환경 변수와 명령행 인자로부터 설정값을 읽어오는 간단한 예제 코드이다.

package main

import (
	"flag"
	"fmt"
	"os"

	"github.com/namsral/flag"
)

func main() {
	// 환경 변수로부터 설정값 읽어오기
	flag.Var(&appPort, "port", "App port")
	flag.Parse()

	fmt.Println("App port:", appPort)
}

func init() {
	// 명령행 인자로부터 설정값 읽어오기
	os.Setenv("APP_PORT", "8080")
}

이 예제 코드에서는 flag.Var 함수를 사용하여 환경 변수로부터 설정값을 읽어오고, os.Setenv 함수를 사용하여 명령행 인자로부터 설정값을 설정한다.

결론

varflag 패키지를 사용하면 flag 패키지의 기능을 확장하여 프로그램 초기화를 위한 다양한 소스로부터 설정값을 가져올 수 있다. 이를 통해 유연하고 확장 가능한 프로그램을 작성할 수 있다.

참고 자료