Go 言語の組み込みモジュールを触ってみる-環境変数の取得・設定(os.Getenv、os.Setenv)

はじめに

今回は os パッケージに内包されている、 環境変数を取得したり、設定したりするための組み込み関数 を紹介します。

検証環境

1
2
3
4
5
$ uname -moi
x86_64 MacBookPro16,1 Darwin

$ go version
go version go1.16.3 darwin/amd64

インターフェイス

1
func Getenv(key string) string
1
func Setenv(key, value string) error

説明

Getenv 関数を使うと、環境変数の名前を指定して値を取得することができます。 Setenv 関数を使うと、環境変数の名前と値を指定して設定することができます。

Getenv は環境変数が設定されていないのか、値が空なのかの区別ができないため、両者を区別したい場合には LookupEnv 関数を使います。

サンプルコード

main.go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main

import (
	"log"
	"os"
)

func main() {
	// ログ出力フォーマットを調整
	log.SetFlags(0)

	// 1. 環境変数 PWD を取得
	pwd := os.Getenv("PWD")
	log.Println(pwd)

	// 2. 環境変数 VAR1 を取得
	var var1 string
	var ok bool
	var1 = os.Getenv("VAR1")
	log.Println(var1)

	var1, ok = os.LookupEnv("VAR1")
	log.Println(ok)

	// 3. 環境変数 VAR1 を設定→取得
	err := os.Setenv("VAR1", "ABC")
	if err != nil {
		log.Fatal(err)
	}

	var1 = os.Getenv("VAR1")
	log.Println(var1)

	var1, ok = os.LookupEnv("VAR1")
	log.Println(ok)
}

実行

1
2
3
4
5
6
$ go run main.go
/workdir

false
ABC
true

ひとこと

外部から実行環境ごとの設定の違いを注入するために、環境変数の利用は重要です。