Go 語言的環境變數

環境變數

通常環境變數指的是由命令列或外部傳入的變數,設定環境變數的好處是可以讓程式更具彈性。常見的設定方式如下:
export DATABASE_PASS=unicorns
set DATABASE_PASS=unicorns

在程式中取得環境變數

通常可以使用:os.Getenv("名稱") 來取得環境變數。範例如下:
package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println("Reading Environment Variable")
    var databasePass string
    databasePass = os.Getenv("DATABASE_PASS")
    fmt.Printf("Database Password: %s\n", databasePass)
}

在程式中設定環境變數

我們也可以在城市中透過:os.Setenv()來設定環境變數,如:
package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println("Reading Environment Variable")
    var databasePass string
    databasePass = os.Getenv("DATABASE_PASS")
    fmt.Printf("Database Password: %s\n", databasePass)

    err := os.Setenv("DATABASE_PASS", "newunicorns")
    if err != nil {
        fmt.Println(err)
    }
    databasePass = os.Getenv("DATABASE_PASS")
    fmt.Printf("Database Password: %s\n", databasePass)
}

Feature Flages

package main

import (
    "fmt"
    "log"
    "net/http"
    "os"
)

func homePage(w http.ResponseWriter, r *http.Request) {
    if os.Getenv("FEATURE_TOGGLE") == "TRUE" {
        fmt.Println(os.Getenv("FEATURE_TOGGLE"))
        fmt.Fprintf(w, "Exciting New Feature")
    } else {
        fmt.Println(os.Getenv("FEATURE_TOGGLE"))
        fmt.Fprintf(w, "existing boring feature")
    }
}

func handleRequests() {
    http.HandleFunc("/", homePage)
    log.Fatal(http.ListenAndServe(":8081", nil))
}

func main() {
    handleRequests()
}

參考資料