gpt4 book ai didi

go - gofmt 重写规则可以删除冗余参数类型吗?

转载 作者:IT王子 更新时间:2023-10-29 01:27:54 24 4
gpt4 key购买 nike

如果你有这样的代码: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 documentation .网络搜索没有找到任何有用的信息。

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

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

gofmt 可以做到这一点吗?

最佳答案

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

Go 规范( http://golang.org/ref/spec#Expressions )清楚地说“表达式通过将运算符和函数应用于操作数来指定值的计算”。所以 go fmt 尝试将您的模式“f(x t, y t)”解析为函数调用,因此它需要逗号或括号而不是“t”。

你不能写很多“func MyFunc(a int, b int)”的模式——因为它的函数定义,不是一个有效的 go 表达式

关于go - gofmt 重写规则可以删除冗余参数类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com