1 回答
TA贡献1982条经验 获得超2个赞
目的是强制执行布局规则:
gofmt 是一个漂亮的打印机,其目的是强制执行布局规则;它取代了通常允许解释的“该做和不该做”的概要。
下面是来自go/printer/nodes.go 的格式化摘录,详细介绍了格式化规则:
格式化二进制表达式:确定截止值,然后格式化。我们将深度 == 1 称为普通模式,将深度 > 1 称为紧凑模式。(Russ Cox 的算法建议。)
优先顺序是:
5 * / % << >> & &^ 4 + - | ^ 3 == != < <= > >= 2 && 1 ||
唯一的决定是第 4 层和第 5 层周围是否有空格。第 6 层(一元)永远没有空格,而第 3 层及以下层始终有空格。
要选择截止值,请查看整个表达式,但不包括主要表达式(函数调用、带括号的表达式),并应用以下规则:
如果存在带有右侧一元操作数的二元运算符,如果没有空格就会发生冲突,则截止必须是(按顺序):
/* 6 && 6 &^ 6 ++ 5 -- 5(比较运算符周围总是有空格。)
如果混合使用 5 级和 4 级运算符,则正常模式下的截止值为 5(使用空格来区分优先级),而紧凑模式下的截止值为 4(从不使用空格)。
如果没有 4 级运算符或没有 5 级运算符,则正常模式下的截止值为 6(始终使用空格),紧凑模式下的截止值为 4(从不使用空格)。
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报