golang学习笔记四:分号和换行

不知道应该扔在哪儿不如新开一个。。。

还是来自于 effective go

go 和 C 一样都是用分号来判断一个语句的结束,但是 go (可能是在编译的时候)增加了一个自动添加分号的方法,go会在一行是以以下语句结束的时候自动添加分号:

  • 当输入被断开为标记时,如果行末标记为
    • 一个标识符
    • 一个整数、浮点数、虚数、字符或字符串文字
    • 关键字breakcontinuefallthroughreturn中的一个
    • 运算符和分隔符++--)]}中的一个

如果是一把一段复合语句扔到一行里去的话,比如:

1
go func() { for { dst <- <-src } }()

也并不用分号,因为go会自动在收大括号前增加分号。

根据这个方法,go解决了一个多年的争端,大括号是否换行的问题哈哈哈哈哈哈哈哈哈哈

1
2
3
if i < f() {
g()
}

上面这样没问题,但是如果换行的话f()后面就会多了一个分号哈哈哈哈哈哈哈哈哈哈哈

1
2
3
4
if i < f()  // wrong!
{ // wrong!
g()
}

备注:当然循环里面用来区别initializer,condition的分号还是不能丢呀