설정 파일에 환경 변수를 Go로 쓰고 싶어요.

5001 단어 Go

환경 변수 쓰기


yaml이나 어떤 파일에 프로그램의 설정값을 쓸 때 환경 변수도 함께 쓰면 됩니다.그때 이 방법을 쓰면 되지 않겠습니까?먼저 한 말의 실용성이 불분명하다.

메서드


yaml로 설정 쓰기처음에는 환경 변수이고 설정이 없으면 | 오른쪽에 있는 문자열을 분리하여 값을 설정합니다.
yml := `
password: $DBPASS|mypass
user: $DBUSER|root
name: $DBNAME|db_dev
host: $DBHOST|localhost
`
string의named type을 만듭니다.
type F string
yaml을 받는 struct를 제작합니다.
type dbSetting struct {
    Password F
    User     F
    Name     F
    Host     F
}
받아들이다.
conf := dbSetting{}
yaml.Unmarshal([]byte(yml), &conf)
F에서 수신기 방법을 만들었어요.
이런 느낌.
func (f *F) Val() (string, error) {
    // 空文字だったらエラー
    if f.raw() == "" {
        return "", errors.New("value not set")
    }

    // sep == "|" で分解
    pieces := strings.Split(f.raw(), sep)
    for _, p := range pieces {
        // $から始まる = 環境変数
        if strings.HasPrefix(p, envvarPrefix) {
            // 環境変数が見つかったらそれを返す
            if env, ok := os.LookupEnv(strings.TrimLeft(p, envvarPrefix)); ok {
                return env, nil
            }
            continue
        }
        // 環境変数が見つからない || 普通の文字列の場合
        return p, nil
    }
    return "", errors.New("value not set")
}
따라서 설정 파일에서 환경 변수의 값을 얻을 수 있습니다.
conf.Password.Val()

해봤어요.


confield라고 합니다.써 보았지만 자신도 실천에서 시도해 본 적이 없어 어떻게 쓰는지 모르겠다.
https://github.com/seihmd/confield

좋은 웹페이지 즐겨찾기