golang - Go 언어의 응용 프로그램 설정 및 환경 변수를 Struct에 정리

출처

Go 언어에서 환경 변수를 읽기

Go 언어의 표준 패키지에서 쉽게 환경 변수를 읽을 수 있다.

fmt.Println(os.Getenv("HOME"))

그러나 때때로 환경 변수가 없을 때의 기본 설정을 할 수 있다.

home := os.Getenv("HOME")
if home == "" {
  home = "/home/default/place"
}

fmt.Println(home)

caarlos0/env를 사용하여 Struct에 읽기

env 라는 라이브러리이다.
환경 변수에서 읽어 내고 싶은 정보는 Struct에 모으고, tag에 정보를 부여하여 기본값 설정 및 필수 설정 등을 할 수 있다.

package main

import (
    "fmt"

    "github.com/caarlos0/env"
)

type Config struct {
    Home         string   `env:"HOME"`
    Port         int      `env:"PORT" envDefault:"3000"` // 기본 값 설정
    IsProduction bool     `env:"PRODUCTION"`
    Hosts        []string `env:"HOSTS" envSeparator:":"` // 배열도 읽을 수 있다
    SecretKey    string   `env:"SECRET_KEY,required"` // 필수 설정 도 가능
    Notag        string   // 태그 없이 하면 환경 변수가 아닌 설정도 같이할 수 있다
}

func main() {
    cfg := Config{}
    env.Parse(&cfg) // 파스 하면 환경 변수에서 값이 읽어진다
    fmt.Println(cfg)
}

이 글은 2020-02-13에 작성되었습니다.