为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 的默认值模式

Golang 的默认值模式

Go
千万里不及你 2023-05-04 16:03:56
我有这个: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"

}


查看完整回答
反对 回复 2023-05-04
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

我会使用LookupEnv。boolean如果未设置变量,它会提供一个错误。

:8000意味着侦听器将绑定到所有网络接口。您可以认为它与127.0.0.1:8000which 仅绑定到环回接口不同。


查看完整回答
反对 回复 2023-05-04
?
慕森王

TA贡献1777条经验 获得超3个赞

在 Go 中没有简单的速记方法来做到这一点,但对于您的情况,您可以改用它LookupEnv,它返回值(如果设置)和一个布尔值,指示是否在环境中找到密钥:

https://golang.org/pkg/os/#LookupEnv


查看完整回答
反对 回复 2023-05-04
  • 3 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信