不知道应该扔在哪儿不如新开一个。。。
还是来自于 effective go
go 和 C 一样都是用分号来判断一个语句的结束,但是 go (可能是在编译的时候)增加了一个自动添加分号的方法,go会在一行是以以下语句结束的时候自动添加分号:
- 当输入被断开为标记时,如果行末标记为
- 一个标识符
- 一个整数、浮点数、虚数、字符或字符串文字
- 关键字
break
、continue
、fallthrough
或return
中的一个 - 运算符和分隔符
++
、--
、)
、]
或}
中的一个
如果是一把一段复合语句扔到一行里去的话,比如:
1 | go func() { for { dst <- <-src } }() |
也并不用分号,因为go会自动在收大括号前增加分号。
根据这个方法,go解决了一个多年的争端,大括号是否换行的问题哈哈哈哈哈哈哈哈哈哈
1 | if i < f() { |
上面这样没问题,但是如果换行的话f()后面就会多了一个分号哈哈哈哈哈哈哈哈哈哈哈
1 | if i < f() // wrong! |
备注:当然循环里面用来区别initializer,condition的分号还是不能丢呀