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 關注
- 119 瀏覽
添加回答
舉報