Golang 值得注意的地方
golang 的语法和使用方式都非常简单明了,没有花哨的语法糖,也没有多余的关键字。 但是即使是这么简洁的语言,仍然有一些不那么直白,需要注意的地方,比如下面2点。
interface 由2部分组成, type 和 value ,调用 func f 的时候,out 的 type 设置为 *bytes.Buffer, value 设置为 nil。
此时 out != nil,因为虽然 out 的 value == nil
, 但是 type !=nil
在写代码时如果不注意这里,很容易导致运行时的 panic
golang 中可以通过类型判断来进行转型。 类型判断时,转型的代码可以返回一个值,也可以返回2个值(附加判断结果 ok)。
同一段代码的返回值,却有2种情况,channel和map也有上面的现象:(如以下代码都是正确的)
这种语法的实现简单来说,就是 golang 在类型判断时,会根据语法树检查 = 左边是否有 comma(也就是逗号),如果有的话就返回2个值,没有就返回一个值。