Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8091

Goメモ-431 (envメモ)(01.basic) - いろいろ備忘録日記

$
0
0

関連記事

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

参考情報

carlosbecker.com

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。


Viewing all articles
Browse latest Browse all 8091

Trending Articles