0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go 言語を学ぶAdvent Calendar 2023

Day 17

【Go言語】環境変数の活用

Posted at

環境変数とは

  • 実行時のオプションとしてではなく、プロセスが持つ変数として提供される
  • オペレーティングシステムは、プログラムの実行時に環境変数のリストをプログラムに渡す
  • デプロイ時に設定可能で、同一のバイナリを異なる環境(本番、テストなど)で使用する際に柔軟な設定を可能にする

環境変数の取得方法

2通り紹介する

osパッケージを使用する方法

一番プリミティブな方法

package main

import (
	"fmt"
	"os"
)

func main() {
	gopath := os.Getenv("GOPATH")
	fmt.Println(gopath)
}

envconfigを使用する方法

環境変数をGoの構造体にマッピングすることができる

  • 使い方
    • 構造体のフィールドにenvconfigタグを付けることで、環境変数との対応付けを行う
    • defaultオプションを使用して、環境変数が設定されていない場合のデフォルト値を指定できる
    • requiredオプションは、環境変数が必須であることを指定できる。この環境変数が設定されていない場合、envconfig.Processはエラーを返す。
package main

import (
	"fmt"

	"github.com/kelseyhightower/envconfig"
)

type Config struct {
	Port      uint16 `envconfig:"PORT" default:"3000"`
	Host      string `envconfig:"HOST" required:"true"`
	AdminPort uint16 `envconfig:"ADMIN_PORT" default:"3001"`
}

func main() {

	var c Config
	err := envconfig.Process("", &c)
	if err != nil {
		fmt.Println("Error processing environment variables:", err)
		return
	}
	fmt.Println(c)
}

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?