三元表达式的介绍在这里:

Go语言明确不支持三元表达式,这里是相关的讨论: https://groups.google.com/d/msg/golang-nuts/dbyqx_LGUxM/tLFFSXSfOdQJ

if
if expr {
    n = trueVal
} else {
    n = falseVal
}
ifnifnifn
var n int
if expr {
    n = trueVal
} else {
    n = falseVal
}
println(n)
n := expr? trueVal: falseVal
maxmin
func max(a, b int) int {
    if a < b {
        return b
    }
    return a
}
maxintmax
template <class T>
const T& max (const T& a, const T& b) {
    return (a<b)?b:a;     // or: return comp(a,b)?b:a; for version (2)
}
Ta
Ifif
func If(condition bool, trueVal, falseVal interface{}) interface{} {
    if condition {
        return trueVal
    }
    return falseVal
}

a, b := 2, 3
max := If(a > b, a, b).(int)
println(max)

有几个关键点:

a
?:
?:
c?d?e?0:1:2:3

不过我觉得嵌套不是问题的本质,函数也能导致嵌套的滥用。 但是不能因为滥用的行为来排斥有存在价值的语法(比如三元表达式)。