我有这个: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 关注
- 146 浏览
添加回答
举报
0/150
提交
取消