正确:
if(true) {
}
不正确:
if(true)
{
}
这种样式为什么被强制执行?是因为与语言规范有关还是只是因为他们更喜欢其中一种风格?
正确:
if(true) {
}
不正确:
if(true)
{
}
这种样式为什么被强制执行?是因为与语言规范有关还是只是因为他们更喜欢其中一种风格?
大多数派生自C语言的编程语言使用这种风格:if ( <condition> ) <statement>
,当condition
为真时执行statement
。 statement
可以是单个语句或用括号括起来的块。
Go语言的if
语句需要一个后面用括号括起来的块而不是单个语句。这是为了避免一种常见错误,大多数编码规范都要求所有的if
语句都要用括号括起来。
//subtle error in C
if (<condition>)
<statement1>;
<statement2>;
现在Go语言要求在if语句后面加上括号,这使得()变得冗余。它们只是用来帮助词法分析器区分条件和语句,否则if 很难解析。(条件从哪里结束,语句从哪里开始?);
。 - jokoon;
插入使用了非向前查看的词法分析器,这样做非常快。出于性能考虑,隐式的;
和显式的;
一样快。D、C++、Java、C#和Go都在它们的语法规范中使用了;
,它们都是C的后代(也称花括号语言)。我将它们进行比较,因为它们的解析器相似并且必须解决类似的问题。 - deft_codepackage main
import
(
"fmt"
)
func main()
{
if false
{ fmt.Println("jack")
fmt.Println("forkgo")
} else
{ fmt/
.Println("hello")
fmt.Println("forkgo")
}
}
else
吗? - Xam“使用大括号的目的在于方便通过将大括号对齐在同一列上来识别语句块的作用域。”
“同意 - 如果你喜欢将大括号对齐以区分块,则会非常困难。”
()
。见 Effective Go。 - deft_code