Golang 구조체로 환경 변수를 파싱하는 env 라이브러리 알아보기
오늘은 Golang의 구조체로 환경 변수를 파싱해서 사용할 수 있는 env 라이브러리를 알아보려 합니다.
env 설치
우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.
맥에서 brew로 쉽게 설치할 수 있습니다.
brew install go
우분투에서도 apt로 쉽게 설치할 수 있습니다.
sudo apt-get install golang-go
go get으로 github에서 호스팅되고 있는 env 패키지를 설치합니다.
github.com/caarlos0/env
홈의 go 폴더에 env 소스코드와 패키지 파일이 생성됩니다.
예제
package main
해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.
import (
"fmt"
"time"
"github.com/caarlos0/env"
)
fmt, time 그리고 env를 가져옵니다.
type config struct {
String string `env:"HOME"`
struct를 이용하여 환경 변수로 파싱할 수 있습니다.
HOME 환경 변수를 string 타입으로 가져올 수 있습니다.
Int int `env:"INT" envDefault:"1"`
int 타입도 가능하며, envDefault로 기본 값을 지정할 수 있습니다.
Bool bool `env:"PRODUCTION" envDefault:"true"`
bool 타입도 가능하며, envDefault로 기본 값을 지정할 수 있습니다.
Slice []string `env:"SLICE" envSeparator:":" envDefault:"hello:world"`
슬라이스로도 가능하며 envSeparator로 구분자를 지정할 수 있습니다.
Duration time.Duration `env:"DURATION"`
}
time.Duration로 지속 시간을 파싱할 수 있습니다.
func main() {
config := config{}
메인 함수에서 구조체로 config 객체를 만듭니다.
if err := env.Parse(&config); err != nil {
panic(err)
}
구조체를 파싱하고 그 값을 환경 변수에 불러옵니다.
fmt.Printf("%+v\n", config)
}
config 객체를 출력합니다.
Written on August 9, 2019