回答

收藏

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

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

在 C/C  (以及该家族的许多语言)中,根据条件声明和初始化变量的常用习惯用法使用三元条件运算符:
3 t+ l9 t. E/ t, c" t. n' S2 A
    int index = val > 0 ? val : -val
    " F, s8 k; e3 V9 ~3 ]5 [
Go 没有条件操作符。实现与上述代码段相同最常用的方法是什么?我来到以下解决方案,但似乎很冗长) i; H1 u* v7 m" G
    var index intif val > 0{     index = val} else    index = -val}
    6 e0 ~' k  e1 l- n) d
有什么更好的吗?1 \6 G1 b+ q. L3 N7 [
                                                                , @; g5 p* g; I& V% H4 x( }
    解决方案:                                                                , q! T3 |9 B5 t9 ^
                                                                正如所指出的(希望不出所料),usingif else确实是在 Go 常用的执行条件方法。9 l" M- N# q) R0 [7 f
但是,除了完整var if else除了代码块,这种拼写也经常使用:8 c7 H% o- h) }% W" m$ ?3 T! c' i
[code]index := valif val 如果你有足够的重复代码块,例如,它相当于int value = a
  ?, }; g# c# M. X+ ?8 d$ m[code]func min(a,b int) int    if a 这些简单的函数由编译器内联,因此它们更快、更清晰、更短。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则