`cmd/gofmt: 不一致的map值类型后的空白符`

utugiqy6  于 5个月前  发布在  Go
关注(0)|答案(4)|浏览(46)

Consider the following :

var _ = map[string]func() bool{
	"Func": func() bool {
		return false
	},
}

在一行中,它是 go fmt 作为 func() bool{,另一行作为 func() bool {。请注意 bool{ 之间的空格。
在前一种情况下,这是Map字面量的语法,而后者是函数声明。
也许我们应该总是在包含空格的类型表达式(例如 func() boolchan bool)之后输出一个空格?

m3eecexj

m3eecexj2#

这是在Go 1.18及更早版本中新出现的行为吗?

b4wnujal

b4wnujal3#

我相信这种行为从有史以来就一直存在。
鉴于Go1.19无论如何都会引发大量的代码更改(由于godoc格式化)。现在可能是修复所有这些小小的go fmt怪癖的最佳时机。

5jdjgkvh

5jdjgkvh4#

就我个人而言,我更喜欢现在的样子。
这种变化从文本意义上增加了一致性,因为使两个字符串相同(func() bool {),但从语法上讲,它不太一致,因为如何格式化map(以及切片、数组等)字面量取决于类型的拼写。
以今天的方式,当人们看到空格(或没有)时,它立即提示你是否在阅读例如Map字面量或函数字面量。这对可读性来说是一个小小的好处。

相关问题