Golang 的默认值模式

我有这个:

port := os.Getenv("huru_api_port") ||  ":8000"

无法编译,如果 huru_api_port 为空/未定义,Golang 不会将其识别为默认为“:8000”的语法。

有没有好的方法来做到这一点?在旁注中,为什么它是“:8000”而不是“8000”,例如:

log.Fatal(http.ListenAndServe(":8000", router))


千万里不及你
浏览 110回答 3
3回答

墨色风雨

os.LookupEnv将环境变量作为字符串和布尔值返回,指示变量是否已设置,因此您将获得v, ok = "something", true// or, if the env var isn't setv, ok = "", false// or, if the env var is set but empty:v, ok = "", true像这样使用它:var port stringvar ok boolif port, ok = os.LookupEnv("huru_api_port"); !ok {    port = ":8000"}

拉风的咖菲猫

我会使用LookupEnv。boolean如果未设置变量,它会提供一个错误。这:8000意味着侦听器将绑定到所有网络接口。您可以认为它与127.0.0.1:8000which 仅绑定到环回接口不同。

慕森王

在 Go 中没有简单的速记方法来做到这一点,但对于您的情况,您可以改用它LookupEnv,它返回值(如果设置)和一个布尔值,指示是否在环境中找到密钥:https://golang.org/pkg/os/#LookupEnv
打开App,查看更多内容
随时随地看视频慕课网APP