为什么vscode golang插件会在保存时删除运算符周围的空格?
如果有关系的话,我已经写代码很多年了,但我现在只是同时探索golang和vscode 在我的Linux机器上,我安装了vscode(1.56.2)和golang插件(0.25.1) 我一直在浏览一些简单的golang教程,我注意到当我保存一个我编辑过的文件时发生了一件奇怪的事情 这是我的台词:为什么vscode golang插件会在保存时删除运算符周围的空格?,go,visual-studio-code,Go,Visual Studio Code,如果有关系的话,我已经写代码很多年了,但我现在只是同时探索golang和vscode 在我的Linux机器上,我安装了vscode(1.56.2)和golang插件(0.25.1) 我一直在浏览一些简单的golang教程,我注意到当我保存一个我编辑过的文件时发生了一件奇怪的事情 这是我的台词: out = append(out, base + v) 当我保存它时,它是这样的: out = append(out, base+v) 它删除了“+”运算符周围的空格。我搜索了vscode和golan
out = append(out, base + v)
当我保存它时,它是这样的:
out = append(out, base+v)
它删除了“+”运算符周围的空格。我搜索了vscode和golang扩展设置,但几乎没有发现它在保存时会做什么
事实上,在设置中,我没有选中“保存时格式化”
那么,这是什么,为什么?我有能力配置这个吗?这与VScode无关。如果您有此文件:
package main
import "fmt"
func main() {
var a []int
a = append(a, 1 + 2)
fmt.Println(a)
}
运行gofmt file.go
将为您提供:
package main
import "fmt"
func main() {
var a []int
a = append(a, 1+2)
fmt.Println(a)
}
那么,这是什么,为什么
编辑器在保存时运行gofmt
命令。该命令使用空格显示运算符优先级
以下代码段是使用gofmt
命令格式化的。请注意操作数如何更接近优先级较高的运算符
fmt.Println(a + b + c + d)
fmt.Println(a * b * c * d)
fmt.Println(a + b*c + d)
fmt.Println(a*b + c*d)
gofmt
命令删除问题中+
周围的空格,因为+
优先于,
标准的Go样式是Go fmt
产生的任何内容。请看,好的,这两个注释实际上并没有回答我的大部分显性和隐性问题。我还阅读了关于gofmt的文档,但我找不到任何真正描述格式规则的内容。我甚至在“settings.json”中的“[go]”块中将“editor.formatSave”设置为false,它仍然进行这种转换。引用Rob Pike的话,“没有人喜欢gofmt的风格,但gofmt是每个人的最爱。”。该工具的目的是消除关于格式化样式的任何毫无意义的争论,只需使代码统一。好的,在vscode中哪里可以关闭格式化程序,因为我已经有了“保存时格式化”未选中?我从哪里可以获得关于gofmt实现的格式规则的信息?@DavidM.Karr这些是不同的问题-也许你可以发表新的帖子