Go语言的三元表达式

您所在的位置:网站首页 类似问好的符号 Go语言的三元表达式

Go语言的三元表达式

#Go语言的三元表达式| 来源: 网络整理| 查看: 265

Go语言的三元表达式 

 

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

http://en.wikipedia.org/wiki/%3F:http://en.wikipedia.org/wiki/IIf

 

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

官方FAQ的说明在这里: http://golang.org/doc/faq#Does_Go_have_a_ternary_form

官方FAQ推荐的做法是用 if 代替:

if expr { n = trueVal } else { n = falseVal }

不过用 if 的问题是变量 n 有作用域问题. 我们需要在 if 之前先定义变量 n,这样才可以在 if 语句之后使用变量 n。

var n int if expr { n = trueVal } else { n = falseVal } println(n)

本来一个简单的 n := expr? trueVal: falseVal 就能够表达的问题,变的复杂了很多。 这和Go所追求的简单思路是有冲突的。

类似的有 max/min 等函数。因为这类函数使用频度比较高,在很多pkg的内部都定义了私有的实现。

func max(a, b int) int { if a < b { return b } return a }

熟悉Go语言的用户应该可以发现,这个 max 只支持 int 类型。 对于支持泛型的C++语言来说,max 一般被实现为一个模板函数:

template const T& max (const T& a, const T& b) { return (a


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3