为什么VSCode的Golang插件保存文件时会自动移除运算符两侧的空格?
问题解答
触发该行为的模块
这个自动修改是Go语言官方内置的标准格式化工具gofmt触发的,若你配置了自动导入依赖的goimports工具也会执行相同逻辑,两者的格式化规则完全统一。
触发原因
你在VSCode通用设置中关闭的「保存时格式化」属于全局编辑器配置,而Go扩展有独立的保存时行为控制逻辑,默认优先级高于全局设置,保存时会自动调用gofmt处理代码。
Go官方从设计层面就要求统一全社区的代码格式,gofmt的所有规则都是预设好的,移除二元运算符两侧不必要的空格是其默认规则之一。
自定义配置说明
首先需要明确:gofmt本身没有提供任何自定义格式化规则的参数,这是Go官方刻意做的设计,目的是消除不同团队、不同开发者的代码风格分歧,所以你无法直接修改运算符空格这类基础格式化规则。
如果你确实需要关闭这个自动修改行为,可以按照以下步骤调整配置:
- 打开VSCode设置界面,搜索
go.formatOnSave,取消该选项的勾选,这个是Go扩展独立的保存格式化开关,不受全局保存格式化配置的控制 - 如果你开启了Go官方语言服务器
gopls,额外搜索gopls.formatting.enable,将对应配置项设为false,关闭语言服务器的自动格式化触发
注意:关闭
gofmt自动格式化会导致你的代码不符合Go社区通用规范,后续协作时容易出现不必要的格式冲突,非特殊需求不建议执行上述关闭操作。
内容的提问来源于stack exchange,提问作者David M. Karr
相关产品推荐
相关产品推荐

