当前位置: 首页 > 知识库问答 >
问题:

如何用“或”进行变量赋值

东方飞捷
2023-03-14

这是可能的吗,以及如何使用这样的逻辑进行一行(或短)var赋值

a := b (or if b is false, nil or undifined, then a equals to) "hello"  

我试图做到:

a := b | "hello"

但得到一个错误:“运算符|未在字符串上定义”。

所以我来自JS,并试图实现:

const a = b || "hello";

但要“走”

由于它是静态类型的Lang,我的意思是如果b == " "(空字符串)

共有3个答案

袁山
2023-03-14

我认为做自己的功能很棒,但是Go语言有自己的管理标志的方法

import (
    "flag"
)

func main() {    
    env := flag.String("env", "dev", "description")
}

所以这里env的默认值是dev,您可以运行并更改它

go run main.go -env=prod

当做

韩智明
2023-03-14

在为Env变量定义默认值时,我也有类似的愿望。

我解决这个问题的方法是定义一个函数,就像这样:

func getenv(key, fallback string) string {
    value := os.Getenv(key)
    if len(value) == 0 {
        return fallback
    }
    return value
}

当我调用这个函数时,它看起来就像“或”一样简洁:

port := getenv("PORT", "8000")

您可以根据用例定义自己的函数。

司寇望
2023-03-14

没有这样的Go语法。使用if语句。

|的操作数必须是整数。||的操作数必须是布尔值。

更重要的是,字符串不能是falsenil

鉴于OP的实际目标是为环境变量提供默认值,因此测试应该针对os. LookupEnv中的布尔返回值,而不是字符串值。使用这样的函数:

func getenv(key string, def string) string {
     val, ok := os.LookupEnv(key)
     if !ok {
         val = def
     }
     return val
}
 类似资料:
  • 本文向大家介绍AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值,包括了AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值的使用技巧和注意事项,需要的朋友参考一下 在"AngularJS中自定义有关一个表格的Directive"中自定义了一个有关表格的Direcitve,其表格的表现方式是这样的: 以上,变量colmnmap的值是事先定义

  • 问题内容: 因此,前几天我在玩,目的是确切了解批量分配在JavaScript中的工作方式。 首先,我在控制台中尝试了以下示例: 结果是“栏”显示在警报中。这很公平,并且实际上只是同一对象的别名。然后我想,如何使这个例子更简单。 那几乎是同一回事,不是吗?好吧,这次返回的结果与我从第一个示例的行为所期望的不一样。 为什么会这样? 注意: 可以使用以下代码进一步简化此示例: (我怀疑JavaScrip

  • 问题内容: 在许多Java源代码中(例如),我看到了类似的东西; 我了解基本模式(锁定,最终解锁),但是我的问题是, 为什么在使用它之前先对本地作用域的Lock变量进行赋值? 为什么这样做而不是以下内容? 它会影响优化吗?第一个示例可以防止锁变粗吗? 评论后编辑 :如果您真的不知道为什么会出现这种情况,请不要添加答案。这是从Java来源获得的,@author标记是Doug Lea,所以我很确定它的

  • 我需要在lambda中做以下操作,但无法想出单流和还原(s)可以帮助的方法:( Output类具有->Integer cost1,Integer cost2

  • = 赋值操作符(它的左右两边不能有空白符) 不要搞混了 = 和 -eq,-eq 是比赋值操作更高级的测试。注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符。 例子 4-2. 简单的变量赋值 1 #!/bin/bash 2 # 裸变量 3 4 echo 5 6 # 什么时候变量是“裸”的?比如说,变量名前面没有$? 7 #当变量被赋值