Environment Variables->환경변수
#
// [환경변수](http://en.wikipedia.org/wiki/Environment_variable)
// 는 [Unix 프로그램에 설정 관련 정보를 전달](http://www.12factor.net/config)
// 하는데 일반적으로 사용되는 방법입니다.
// 환경변수를 어떻게 설정하는지, 어떻게 가져오는지, 그리고
// 설정된 환경변수들을 어떻게 보는지 봅시다.
package main
import "os"
import "strings"
import "fmt"
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`와 같은 형태의 문자열로 구성된
// 슬라이스를 반환합니다. 슬라이스의 각 원소에
// `string.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
...