Go中有这个JS表达式的等价物吗?

时间:2016-04-03 20:54:24

标签: javascript string go

假设我们有2个字符串,str1和str2。我想要一个新的变量str3等于str1,或者如果str1为空则等于str2。

在JS中我会写:

var str3 = str1 || str2

在Go中,我必须这样做:

str3 := str1
if str1 == "" {
    str3 = str2
}

这是一个有点过于冗长的imo。 是否有与JS中的表达式相同的表达式?

2 个答案:

答案 0 :(得分:2)

  

是否有与JS中的表达式相同的表达式?

不,但如果你发现自己经常这样做,你可以编写一个功能来完成你想要完成的任务:

aria-label

用法:

func strs(s ...string) string {
    if len(s) == 0 {
        return ""
    }
    for _, str := range s[:len(s)-1] {
        if str != "" {
            return str
        }
    }
    return s[len(s)-1]
}

https://play.golang.org/p/Gl_06XDjW4

答案 1 :(得分:0)

Go中没有等效的操作。你必须使用if(或一个开关,但更加冗长)。我会这样写:

var str3 string
if str1 != "" {
    str3 = str1
} else {
    str3 = str2
}