Environment Variables
#
// [環境変数](http://en.wikipedia.org/wiki/Environment_variable)は
// [設定情報を Unix 上で動くプログラムに伝える](http://www.12factor.net/config)一般的な仕組みである。
// 環境変数を読んだり、書いたりしてみよう。
package main
import (
"fmt"
"os"
"strings"
)
func main() {
// キーと値のペアをセットするには `os.Setenv` を使う。
// キーから値を読み出すには `os.Getenv を使う。
// もしキーが設定されていなければ空の文字列を返す。
os.Setenv("FOO", "1")
fmt.Println("FOO:", os.Getenv("FOO"))
fmt.Println("BAR:", os.Getenv("BAR"))
// 定義されているキーと値の一覧は `os.Environ` で取得する。
// この関数は `KEY=value` という形式の文字列からなるスライスを返す。
// `strings.Split` を使って、このスライスからキーと値を取り出せる。
// ここではすべてのキーを表示している。
fmt.Println()
for _, e := range os.Environ() {
pair := strings.Split(e, "=")
fmt.Println(pair[0])
}
}
# プログラムを実行すると、プログラム内で設定した `FOO` の値を読み出せたことがわかる。
# 一方、`BAR` の値が空であることもわかる。
$ go run environment-variables.go
FOO: 1
BAR:
# 環境におけるキーの一覧は、実行するマシンによって違うはずだ。
TERM_PROGRAM
PATH
SHELL
...
# `BAR` の値を設定してからプログラムを実行すれば、プログラムはその値を読み出せる。
$ BAR=2 go run environment-variables.go
FOO: 1
BAR: 2
...