英文:
Is there an equivalent of this JS expression in Go?
问题
假设我们有两个字符串,str1和str2。我想要一个新的变量str3,如果str1不为空,则等于str1,否则等于str2。
在JavaScript中,我会这样写:
var str3 = str1 || str2;
而在Go语言中,我需要这样写:
str3 := str1
if str1 == "" {
str3 = str2
}
在我看来,这种写法有点啰嗦。是否有与JavaScript中相同的表达式?
英文:
Let's say we have 2 strings, str1 and str2. I want a new variable str3 to equal str1, or if str1 is empty then equal str2.
In JS I would write:
var str3 = str1 || str2
While in Go I have to do it like:
str3 := str1
if str1 == "" {
str3 = str2
}
which is a little bit too verbose imo.
Is there an equivalent expression as the one in JS?
答案1
得分: 2
在Go语言中没有与JavaScript中的那个表达式等效的表达式。但是,如果你经常需要这样做,你可以编写一个函数来实现你想要的功能:
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
英文:
> Is there an equivalent expression as the one in JS?
No, but if you find yourself doing this often, you could write a function that does what you're trying to accomplish:
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]
}
Usage:
str3 := strs(str1, str2)
答案2
得分: 0
在Go语言中没有等效的操作。你需要使用if语句(或者switch语句,但那样会更冗长)。我会这样写:
var str3 string
if str1 != "" {
str3 = str1
} else {
str3 = str2
}
英文:
There is no equivalent operation in Go. You have to do it with an if (or a switch, but that's even more verbose). I would write it like this:
var str3 string
if str1 != "" {
str3 = str1
} else {
str3 = str2
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论