Go by Example ไธญๆ–‡็‰ˆ: ็Žฏๅขƒๅ˜้‡

็Žฏๅขƒๅ˜้‡ ๆ˜ฏไธ€็งๅ‘ Unix ็จ‹ๅบไผ ้€’้…็ฝฎไฟกๆฏ็š„ๅธธ่งๆ–นๅผใ€‚ ่ฎฉๆˆ‘ไปฌๆฅ็œ‹็œ‹ๅฆ‚ไฝ•่ฎพ็ฝฎใ€่Žทๅ–ไปฅๅŠๅˆ—ๅ‡บ็Žฏๅขƒๅ˜้‡ใ€‚

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.SplitN ๆฅๅพ—ๅˆฐ้”ฎๅ’Œๅ€ผใ€‚่ฟ™้‡Œๆˆ‘ไปฌๆ‰“ๅฐๆ‰€ๆœ‰็š„้”ฎใ€‚

    fmt.Println()
    for _, e := range os.Environ() {
        pair := strings.SplitN(e, "=", 2)
        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
...

ไธ‹ไธ€ไธชไพ‹ๅญ: HTTP ๅฎขๆˆท็ซฏ