if的序列可以更优雅地编写吗?

汁液:
if v, ok := os.LookupEnv("IDAASHTTPPORT"); ok {
    c.HTTPPort, _ = strconv.Atoi(v)
}
if v, ok := os.LookupEnv("IDAASDBNAME"); ok {
    c.DBUserName = v
}
if v, ok := os.LookupEnv("IDAASDBPW"); ok {
    c.DBPasswd = v
}
if v, ok := os.LookupEnv("IDAASDBPORT"); ok {
    c.DBPort, _ = strconv.Atoi(v)
}
if v, ok := os.LookupEnv("IDAASDBHOST"); ok {
    c.DBHost = v
}

'c'是以下结构

type Configuration struct {
    HTTPPort   int
    DBUserName string
    DBPasswd   string
    DBPort     int
    DBHost     string
}

如果环境变量存在,我只想更新struct字段。看起来像一些可爱的小地图迭代器或类似的东西可以工作,但是我找不到一个好的解决方案。

马克:

您可以使用一些辅助功能:

func setIntFromEnv(val *int, envName string) {
  if v, ok := os.LookupEnv(envName); ok {
    *val, _ = strconv.Atoi(v)
  }
}

func setStringFromEnv(val *string, envName string) {
  if v, ok := os.LookupEnv(envName); ok {
    *val = v
  }
}

// From your main function.
setIntFromEnv(&c.HTTPPort, "IDAASHTTPPORT")
setStringFromEnv(&c.DBUserName, "IDAASDBNAME")
etc...

仅当您可以忽略要解析为int的字符串env var时,这才有效。它的相对优雅也值得商bat。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有一种方法可以更优雅地编写此“ if”列表?

我如何才能更优雅地编写这些嵌套的if语句?

更优雅的代码编写方式

优雅地编写斐波那契序列Python

编写比Java更优雅的Copyable接口

R - 更优雅的代码行编写方式

有没有更优雅的方法可以在Swift中编写这种惰性加载模式?

我可以使用一种更优雅/更优化的方法来制作此连接算法吗?

可以将此JS forEach函数变得更简单或更优雅吗?

我可以使用Linq以比这更优雅的方式从集合中获取属性吗?

Swift:编写这个数组映射的更优雅的方式?

哪种方法在React中编写Event是更优雅的方法?

我怎样才能更优雅地进行_.has检查?

如何在PHP中更优雅地解析html?

如何更优雅地构造 2 的幂数的 numpy 数组?

如何使用 numpy 更优雅地实现这个 for 循环?

如何更优雅地在蛇游戏(pygame)中添加食物?

我们可以以更优化的方式编写下面的代码吗

我可以在scala flatMap或地图(或没有大小写的东西,更优雅的东西)中得到错误吗?

我可以用一种更优雅的方式对一个组件执行多项操作吗?

这些布尔表达式有更优雅的语法吗?

这个问题有更优雅的解决方案吗?

更优雅的实施方式

更优雅的 if 语句

如何让大班更优雅?

检查日期/期间是否在另一个日期/期间内-可以使用更优雅的解决方案吗?

有没有更优雅的方式在Kotlin中编写此吸气剂?

是编写这段代码的更好,更优雅/更有效的方法

有没有一种更优雅的方式来代替编写大量查询?