我的理解是 go fmt 应该生成可读且格式一致的代码。但是,我认为情况并非如此。
我输入了注释代码,然后 go fmt 返回了未注释的代码。为什么它倒塌了0.5*(y3-y0)
,但没有0.5 * (y2 - y0)
?这怎么一致?而且,IMO,几乎每个空间都塌陷的返回线是可读性灾难。
不一致是错误吗?有没有办法让 go fmt 单独留下一些行(如返回行)?
func cubicInterpolate(x, y0, y1, y2, y3 float64) float64 {
// 4-point, 3rd-order Hermite (x-form)
// c0 := y1
// c1 := 0.5 * (y2 - y0)
// c2 := y0 - 2.5 * y1 + 2. * y2 - 0.5 * y3
// c3 := 1.5 * (y1 - y2) + 0.5 * (y3 - y0)
//
// return ((c3 * x + c2) * x + c1) * x + c0
c0 := y1
c1 := 0.5 * (y2 - y0)
c2 := y0 - 2.5*y1 + 2.*y2 - 0.5*y3
c3 := 1.5*(y1-y2) + 0.5*(y3-y0)
return ((c3*x+c2)*x+c1)*x + c0
}