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 语句,因为它更清晰且符合语言规范。

回到顶部