当前位置: 首页 > 面试题库 >

gofmt重写规则可以删除多余的参数类型吗?

童琪
2023-03-14
问题内容

如果您有如下代码: func MyFunc(a int, b int)

gofmt重写规则可以将其更改为: func MyFunc(a, b int)

我试过了: gofmt -r "f(x t, y t) -> f(x, y t)" myfile.go

但是我得到: parsing pattern f(x t, y t) at 1:5: expected ')', found 'IDENT' t

我也尝试过: gofmt -r "f(x int, y int) -> f(x, y int)" myfile.go

但这给int而不是t带来了类似的错误

我已经阅读了gofmt文档。网络搜索没有发现任何有用的信息。

我故意使用单个字符标识符来匹配表达式。

我怀疑问题可能在于尝试匹配类型,因为它可能不被视为“表达式

使用gofmt可以做到这一点吗?


问题答案:

不,这不可能-
因为将fmt视为模式是“表达式”,请查看http://golang.org/src/cmd/gofmt/rewrite.go
parseExpr()函数。

Go规范(http://golang.org/ref/spec#Expressions)清楚地说明了什么:“表达式通过将运算符和函数应用于操作数来指定值的计算。”
因此,请转到fmt尝试将模式“ f(xt,yt)”解析为函数调用,因此它期望使用逗号或括号而不是“ t”。

您不能编写会“ func MyFunc(a int,b int)”的模式-因为它的函数定义,不是有效的go表达式



 类似资料:
  • dml2select Description:将数据库更新请求转换为只读查询请求,便于执行EXPLAIN Original: DELETE FROM film WHERE length > 100 Suggest: select * from film where length > 100 star2columns Description:为SELECT *补全表的列信息 Original:

  • 本文向大家介绍Java数据类型的规则,包括了Java数据类型的规则的使用技巧和注意事项,需要的朋友参考一下 数据类型的规则   选择合适的数据类型去存储,比如用来存储年龄,他的数值不可能超过200那么就用short存储,才浪费2个字节这样很节约。如果数值永远不大于100那么我们就会用byte来存储,如果这个数值不大于100非得用long长整型去存,就有点浪费了。   但是,现在不比10几年前了,以

  • 我想删除,同时删除中具有匹配的 目前,我有一个外键设置为on delete,更新设置为for。

  • 使用以下代码生成时 生成以下诊断(代码后): 诊断: 有趣的部分不是关于歧义错误本身(这不是这里主要关注的问题)。有趣的是,当仅使用函数名调用fun时,第一个fun的模板参数F被解析为纯函数类型double(double),而第二个fun的模板参数F被解析为更期望的函数指针类型。 然而,当我们将调用<代码>乐趣(测试) 更改为<代码>乐趣( 这种行为似乎是所有Clang和GCC(以及Visual

  • 我的问题不是关于流口水或规则引擎,而是我有一个特定的用例,我计划使用规则引擎。我通读了所有的问题,并在谷歌上搜索,但没有找到最合适的。下面是我的查询 我们有一个爬虫引擎,它以DB的形式输出数据。由于数据量巨大,我们经常会有较少的重复条目。目前,这些规则紧密地绑定在数据库表中,并使用复杂的查询。我曾想过有一个规则引擎,可以在桌面上运行,但我无法通过规则实现它。我错过什么了吗?或者我的理解是错误的。

  • 在以下代码中: 由于lambda不可序列化,以下代码行无法编译: 我的问题是,让lambda实现可序列化有什么语法上的好处吗,还是我必须让它成为一个非匿名类?