3 回答
TA贡献1851条经验 获得超4个赞
正如所指出的(并希望不出所料), usingif+else确实是在 Go 中执行条件的惯用方式。
但是,除了完整var+if+else的代码块之外,这种拼写也经常使用:
index := val
if val <= 0 {
index = -val
}
如果您有足够重复的代码块,例如相当于int value = a <= b ? a : b,您可以创建一个函数来保存它:
func min(a, b int) int {
if a <= b {
return a
}
return b
}
...
value := min(a, b)
编译器会内联这些简单的函数,所以它更快、更清晰、更短。
TA贡献1785条经验 获得超8个赞
No Go 没有三元运算符,使用 if/else 语法是惯用的方式。
为什么 Go 没有 ?: 运算符?
Go 中没有三元测试操作。您可以使用以下方法来获得相同的结果:
if expr { n = trueVal} else { n = falseVal}
?:
Go 不存在的原因是语言的设计者已经看到该操作过于频繁地用于创建难以理解的复杂表达式。的if-else
形式,虽然较长,无疑是更清晰。一种语言只需要一个条件控制流结构。— 常见问题 (FAQ) - Go 编程语言
TA贡献1898条经验 获得超8个赞
假设您有以下三元表达式(在 C 中):
int a = test ? 1 : 2;
Go 中惯用的方法是简单地使用一个if块:
var a int
if test {
a = 1
} else {
a = 2
}
但是,这可能不符合您的要求。就我而言,我需要一个代码生成模板的内联表达式。
我使用了一个立即评估的匿名函数:
a := func() int { if test { return 1 } else { return 2 } }()
这确保不会同时评估两个分支。
- 3 回答
- 0 关注
- 236 浏览
添加回答
举报