3 回答

TA貢獻1789條經(jīng)驗 獲得超10個贊
大多數(shù)C派生語言都使用 style if ( <condition> ) <statement>,statement如果condition為真則執(zhí)行。在statement可以是單個語句或支柱封閉塊。
Go 的if語句需要后面的大括號括起來的塊,而不是單個語句。這是為了避免大多數(shù)風(fēng)格指南通過要求所有語句都使用大括號來避免的常見錯誤if。
//subtle error in C
if (<condition>)
<statement1>;
<statement2>;
現(xiàn)在,Go 在if語句之后需要一個大括號塊,這些語句()是多余的。它們僅用于幫助詞法分析器區(qū)分條件和語句,否則if <condition> <statement>很難解析。(條件在哪里結(jié)束,語句從哪里開始?)
現(xiàn)在 Go 的作者有一個決定:
保留多余的
()
需要
{
遵循<condition>
他們認為裁員是不可取的。這有第二個副作用。由于;
在每個換行符處都有一個隱式,如果{
是在下一行,a;
會被放在<condition>
和之間{
。Go 的作者再次面臨一個決定:
特殊情況下解析器對
<condition>; {
構(gòu)造很聰明要求大家統(tǒng)一風(fēng)格
if ... {
。要求
<condition>
在一行上。
解析器的特殊外殼是一件非常糟糕的事情。看看與 C++ 糟糕的解析器性能相比,D和 Go 解析器的速度。統(tǒng)一的風(fēng)格也是一件好事。考慮到限制,他們的最終決定非常簡單。
- 3 回答
- 0 關(guān)注
- 854 瀏覽
添加回答
舉報