Q : 2 个 interface 可以比较吗 ?
不能直接比较,只有同时为nil且类型相同才可以比较。
Q : 2 个 nil 可能不相等吗?
可能不等。interface在运行时绑定值,只有值为nil接口值才为nil,但是与指针的nil不相等。举个例子:
var p *int = nil
var i interface{} = nil if(p == i){
fmt.Println("Equal")
}
两者并不相同。总结:两个nil只有在类型相同时才相等。
Q : 简述 Go 语言GC(垃圾回收)的工作原理
垃圾回收机制是Go一大特(nan)色(dian)。Go1.3采用标记清除法, Go1.5采用三色标记法,Go1.8采用三色标记法+混合写屏障