Golang中Var x int = (5 > 1)? 0 : 1的用法解析
Golang中Var x int = (5 > 1)? 0 : 1的用法解析 我可以这样做吗:
func main() {
var x int = (5 > 1)? 0 : 1
fmt.Println(x)
}
./hello.go:6:23: 语法错误:语句末尾出现意外的字面量0
3 回复
抱歉,Go语言不支持三元运算符
https://golang.org/doc/faq#Does_Go_have_a_ternary_form
更多关于Golang中Var x int = (5 > 1)? 0 : 1的用法解析的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
供参考,在我自己查找这个问题时,这个帖子除了官方常规解决方案外,还提供了一些实现三元运算符效果的有用替代方法。
在Go语言中,不支持三元条件运算符 ? :,这是导致编译错误的原因。Go的设计哲学强调简洁和明确,因此条件判断必须使用完整的 if-else 语句。
以下是修正后的代码示例:
package main
import "fmt"
func main() {
var x int
if 5 > 1 {
x = 0
} else {
x = 1
}
fmt.Println(x) // 输出: 0
}
或者,可以使用函数来实现类似三元运算符的效果,但这不是Go的惯用方式。例如:
package main
import "fmt"
func ternary(condition bool, trueVal, falseVal int) int {
if condition {
return trueVal
}
return falseVal
}
func main() {
x := ternary(5 > 1, 0, 1)
fmt.Println(x) // 输出: 0
}
在Go中,推荐直接使用 if-else 语句,因为它更清晰且符合语言规范。

