関連記事
https://devlights.hatenablog.com/entry/2024/07/10/073000devlights.hatenablog.com
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。
前回に引き続き、github.com/caarlos0/env のメモです。
今回は、環境変数に設定されている値をenv
にて読み取る際に指定したデリミタで分割してもらう方法について。
$PATH
のようにセパレータで分割して持っていたほうが都合が良い環境変数値とかに利用できます。
サンプル
package main import ( "github.com/caarlos0/env/v11" "github.com/k0kubun/pp/v3" ) type ( // Config は、環境変数の値を保持する構造体です. // // # REFERENCES // - https://github.com/caarlos0/env Config struct { Home string Path []string `envSeparator:":"` } ) func main() { if err := run(); err != nil { pp.Fatal(err) } } func run() error { var ( cfg Config opts = env.Options{ UseFieldNameByDefault: true, } err error ) // 環境変数の値を取得して値を構造体に設定してもらう err = env.ParseWithOptions(&cfg, opts) if err != nil { return err } // Pretty Print pp.Println(cfg) return nil }
実行すると以下のようになります。
# https://taskfile.dev version: '3' vars: APP_NAME: app tasks: default: cmds: - task: run build: cmds: - go build -o {{.APP_NAME}} run: deps: [ build ] cmds: - ./{{.APP_NAME}} clean: cmds: - rm -f ./{{.APP_NAME}}
$ task task: [build] go build -o app task: [run] ./app main.Config{ Home: "/home/gitpod", Path: []string{ "/workspace/go/bin", "/ide/bin/remote-cli", "/home/gitpod/go/bin", "/home/gitpod/go-packages/bin", "/home/gitpod/.local/bin", "/usr/games", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", }, }
ちゃんと指定したセパレータで分割した状態で設定してくれていますね。
サンプルは以下にアップしてあります。
参考情報
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。