我有這個:port := os.Getenv("huru_api_port") || ":8000"無法編譯,如果 huru_api_port 為空/未定義,Golang 不會將其識別為默認為“:8000”的語法。有沒有好的方法來做到這一點?在旁注中,為什么它是“:8000”而不是“8000”,例如:log.Fatal(http.ListenAndServe(":8000", router))
3 回答

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
os.LookupEnv
將環境變量作為字符串和布爾值返回,指示變量是否已設置,因此您將獲得
v, ok = "something", true
// or, if the env var isn't set
v, ok = "", false
// or, if the env var is set but empty:
v, ok = "", true
像這樣使用它:
var port string
var ok bool
if port, ok = os.LookupEnv("huru_api_port"); !ok {
? ? port = ":8000"
}

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
我會使用LookupEnv。boolean
如果未設置變量,它會提供一個錯誤。
這:8000
意味著偵聽器將綁定到所有網絡接口。您可以認為它與127.0.0.1:8000
which 僅綁定到環回接口不同。

慕森王
TA貢獻1777條經驗 獲得超3個贊
在 Go 中沒有簡單的速記方法來做到這一點,但對于您的情況,您可以改用它LookupEnv
,它返回值(如果設置)和一個布爾值,指示是否在環境中找到密鑰:
https://golang.org/pkg/os/#LookupEnv
- 3 回答
- 0 關注
- 198 瀏覽
添加回答
舉報
0/150
提交
取消