proposal: cmd/gofmt: A change of spacing within for...range < int> loops

hrysbysz  于 2个月前  发布在  Go
关注(0)|答案(3)|浏览(33)

建议详情
我知道这已经非常接近于无意义的争论,但我认为这个建议值得一提,即使最后可能会被否决。
这里有一个相当痛苦的例子,来源于一个稍微不那么痛苦的东西。

package main

func main() {
	xs := []int{0, 1, 2}
	n := 1
	ys := make([]int, 0, len(xs)-(n-1))
	for range len(xs)-(n-1) {
		ys = append(ys, len(xs)-(n-1))
	}
}

当通过gofmt时,这变成了

package main

func main() {
	xs := []int{0, 1, 2}
	n := 1
	ys := make([]int, 0, len(xs)-(n-1))
	for range len(xs) - (n - 1) {
		ys = append(ys, len(xs)-(n-1))
	}
}

在我看来,这似乎更糟。范围关键字后的术语形成了紧密的概念群集,但文本是分散的。
我没有看到关于#61405的任何讨论,所以这可能是一个意外的结果。
我建议将空格设置为与函数调用相同。我很乐意尝试实现它。

vmpqdwk3

vmpqdwk31#

The formatting is consistent with when the expression is used outside of range :

_ = len(xs) - (n - 1)
zf9nrax1

zf9nrax12#

gofmt在没有类型信息的情况下可以正常工作,所以我不知道是否有任何合理的方式来实现这个改变,即使我们想要它。
CC @griesemer

jgovgodb

jgovgodb3#

我需要再确认一下,但我相信这种格式完全取决于表达式,不需要类型信息。所以假设大家对此达成一致,应该是可以实现的(而且做起来很简单)。

相关问题