var _ = map[string]func() bool{
"Func": func() bool {
return false
},
}
在一行中,它是 go fmt
作为 func() bool{
,另一行作为 func() bool {
。请注意 bool
和 {
之间的空格。
在前一种情况下,这是Map字面量的语法,而后者是函数声明。
也许我们应该总是在包含空格的类型表达式(例如 func() bool
或 chan bool
)之后输出一个空格?
var _ = map[string]func() bool{
"Func": func() bool {
return false
},
}
在一行中,它是 go fmt
作为 func() bool{
,另一行作为 func() bool {
。请注意 bool
和 {
之间的空格。
在前一种情况下,这是Map字面量的语法,而后者是函数声明。
也许我们应该总是在包含空格的类型表达式(例如 func() bool
或 chan bool
)之后输出一个空格?
4条答案
按热度按时间hc8w905p1#
CC @griesemer
m3eecexj2#
这是在Go 1.18及更早版本中新出现的行为吗?
b4wnujal3#
我相信这种行为从有史以来就一直存在。
鉴于Go1.19无论如何都会引发大量的代码更改(由于godoc格式化)。现在可能是修复所有这些小小的
go fmt
怪癖的最佳时机。5jdjgkvh4#
就我个人而言,我更喜欢现在的样子。
这种变化从文本意义上增加了一致性,因为使两个字符串相同(
func() bool {
),但从语法上讲,它不太一致,因为如何格式化map(以及切片、数组等)字面量取决于类型的拼写。以今天的方式,当人们看到空格(或没有)时,它立即提示你是否在阅读例如Map字面量或函数字面量。这对可读性来说是一个小小的好处。