回答

收藏

什么是 C 的三元运算符的惯用 Go 等价物?

技术问答 技术问答 216 人阅读 | 0 人回复 | 2023-09-12

在 C/C  (以及该家族的许多语言)中,根据条件声明和初始化变量的常用习惯用法使用三元条件运算符:) M2 V' e0 S; B3 Y( n$ i7 ^
    int index = val > 0 ? val : -val
    ' a; k0 Y2 }$ m9 Y9 [: S: D, N3 U
Go 没有条件操作符。实现与上述代码段相同最常用的方法是什么?我来到以下解决方案,但似乎很冗长
' i1 X  b# L$ f& p3 B
    var index intif val > 0{     index = val} else    index = -val}' T5 ?8 }6 ?# _  n
有什么更好的吗?" Y) D& s/ z* v
                                                               
- e  E* H/ [$ ?- `* S/ s+ z( U2 e- `    解决方案:                                                               
! h) w- C/ n. V; @$ C                                                                正如所指出的(希望不出所料),usingif else确实是在 Go 常用的执行条件方法。
6 x/ z$ k, J; @! {) L1 C, S但是,除了完整var if else除了代码块,这种拼写也经常使用:+ {6 q9 n+ z/ U1 q; _
[code]index := valif val 如果你有足够的重复代码块,例如,它相当于int value = a
* c0 I& Y! Z4 J* [+ T[code]func min(a,b int) int    if a 这些简单的函数由编译器内联,因此它们更快、更清晰、更短。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则