Golang Go语言中询问下这个语法是否存在
原文地址是 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)
这样的表达式
(在上面引用的文本中,[ ]
包裹的内容表示为可选, |
表示匹配其中一个)
Golang Go语言中询问下这个语法是否存在
更多关于Golang Go语言中询问下这个语法是否存在的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
定义接口的时候可以吧参数名省略 直接写类型
更多关于Golang Go语言中询问下这个语法是否存在的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
额 感觉是我理解错了 确实没见过。。不知道参数定义算不算参数语法表达式
make
new
ast 解析时,type 和表达式是不怎么区分的,new(int)里 int 可以是类型也可能被重新定义为一个变量。真正的语义需要在 Go/types 包处理。
欢迎关注《 Go 语言定制指南》 https://github.com/chai2010/go-ast-book
在Go语言中,由于您没有提供具体的语法示例,我无法直接判断您所提到的语法是否存在。不过,我可以分享一些通用的方法和原则来帮助您确认Go语言中的语法有效性。
-
查阅官方文档:Go语言的官方文档是确认语法是否存在的最佳资源。您可以在Go官方文档中查找相关的语法描述和示例。
-
使用IDE或编辑器插件:许多现代的IDE和代码编辑器都提供了Go语言的支持,包括语法高亮、自动补全和错误检查。这些工具可以帮助您快速识别语法错误。
-
编写和运行代码:尝试编写包含您所询问的语法的代码,并使用
go run
或go build
命令来编译和运行它。如果编译器报错,那么很可能该语法不存在或您使用的方式不正确。 -
搜索社区和论坛:在Stack Overflow、GitHub Issues或Go语言的社区论坛中搜索您所询问的语法。其他开发者可能已经遇到过类似的问题,并分享了解决方案。
-
阅读开源代码:浏览一些开源的Go语言项目,看看其他开发者是如何使用Go语言的。这不仅可以帮助您了解Go语言的最佳实践,还可以让您接触到各种语法和编程模式。
如果您能提供具体的语法示例,我将能够更准确地回答您的问题。