原文地址是 https://go.dev/ref/spec#PrimaryExpr
原文内容是
PrimaryExpr =
Operand |
Conversion |
MethodExpr |
PrimaryExpr Selector |
PrimaryExpr Index |
PrimaryExpr Slice |
PrimaryExpr TypeAssertion |
PrimaryExpr Arguments .
Selector = "." identifier .
Index = "[" Expression "]" .
Slice = "[" [ Expression ] ":" [ Expression ] "]" |
"[" [ Expression ] ":" Expression ":" Expression "]" .
TypeAssertion = "." "(" Type ")" .
Arguments = "(" [ ( ExpressionList | Type [ "," ExpressionList ] ) [ "..." ] [ "," ] ] ")" .
其中我关心的是 Arguments 的定义,它表示为 ( ExpressionList | Type [ "," ExpressionList ] )
ExpressionList
很容易理解,它可以匹配 (1,2,string(1))
这样的文本,但是 Type [ExpressionList]
怎么理解呢,我从来没见过在 go 里可以写 var v = func_call(TypeName)
这样的表达式
(在上面引用的文本中,[ ]
包裹的内容表示为可选, |
表示匹配其中一个)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.