1.87.2
,操作系统是 Ubunu 23.10v0.41.2
go1.21.0 linux/amd64
我在我的
*.go
Golang 文件中编写了这段代码:
switch {
case myString == "":
fmt.Println("Empty string")
case myString == "foo":
doFoo()
case myString == "bar":
fmt.Println("We got bar now!")
default:
fmt.Println("Another default")
}
VS code 将其格式化为:
switch {
case myString == "":
fmt.Println("Empty string")
case myString == "foo":
doFoo()
case myString == "bar":
fmt.Println("We got bar now!")
default:
fmt.Println("Another default")
}
问题,有没有一种方法可以合理地配置 VSCode/Go 扩展/其他(即不必编写自己的 VS Code 扩展或绕过不寻常的奇怪设置),以便保留片段 1 的格式?
我尝试过的:
gofumpt
、gofmt
、goimports
不知道出了什么问题。
确实,由于某种原因,Go 风格不在
switch
内缩进,可能是 C 风格的延续。例如,这是Effective Go中使用的样式。此外,Go 社区普遍反对改变风格,而且他们的工具通常是不可配置的。 VSCode 自己的语言服务器和所有你提到的 Go 工具都会遵循这种风格。
goformat
可以让你调整风格。例如,enter=1 indent=2
将为您提供更熟悉的样式,其中包含 2 个字符空白缩进和所有块缩进。
goformat.exe -style "enter=1" .\tmp\test.go
package main
import "fmt"
func main() {
myString := "foo"
switch {
case myString == "":
fmt.Println("Empty string")
case myString == "foo":
fmt.Println("foo")
case myString == "bar":
fmt.Println("We got bar now!")
default:
fmt.Println("Another default")
}
}