Go中是否存在与此JS表达式等效的表达式

Is there an equivalent of this JS expression in Go?

本文关键字:表达式 JS 是否 存在 Go      更新时间:2023-11-23

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

在JS中,我会写:

var str3 = str1 || str2

在围棋中,我必须这样做:

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

这有点过于冗长了。是否有与JS中的表达式等效的表达式?

是否有与JS中的表达式等效的表达式?

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

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]
}

用法:

str3 := strs(str1, str2)

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

Go中没有等效的操作。您必须使用if(或开关,但这更为冗长)来完成此操作。我会这样写:

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