関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。
変動する値を環境変数に持ってアプリケーションで利用するということは結構あります。個人的にとても使いやすいライブラリを見つけたので、それのメモを残しておこうと思いました。
環境変数の値を構造体にパッキングしてくれる便利なライブラリ github.com/caarlos0/envの自分用のメモです。
標準ライブラリ以外に依存しているものが無いので、とても使いやすいです。作者に感謝。
今回は基本的な使い方について。
サンプル
package main import ( "github.com/caarlos0/env/v11""github.com/k0kubun/pp/v3" ) type ( // Config は、環境変数の値を保持する構造体です.//// # REFERENCES// - https://github.com/caarlos0/env Config struct { HomeDir string`env:"HOME"` MyEnv1 string`env:"MYENV1"` MyEnv2 int`env:"MYENV2"` } ) func main() { if err := run(); err != nil { pp.Fatal(err) } } func run() error { var ( cfg Config err error ) // 環境変数の値を取得して値を構造体に設定してもらう err = env.Parse(&cfg) if err != nil { return err } // Pretty Print pp.Println(cfg) returnnil }
構造体にタグをつけることによって、読み込んでくれます。
実行すると以下のようになります。
# https://taskfile.devversion:'3'vars:APP_NAME: app tasks:default:cmds:- task: run build:cmds:- go build -o {{.APP_NAME}}run:deps:[ build ]cmds:- ./{{.APP_NAME}} env:MYENV1: helloworld MYENV2:999clean:cmds:- rm -f ./{{.APP_NAME}}
$ task task: [build] go build -o app task: [run] ./app main.Config{ HomeDir: "/home/gitpod", MyEnv1: "helloworld", MyEnv2: 999, }
ちゃんと読み取れてますね。
サンプルは以下にアップしてあります。
try-golang-extlib/examples/singleapp/env/01.basic at main · devlights/try-golang-extlib · GitHub
参考情報
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。