nil 接口值

nil 接口值既不保存值也不保存具体类型。

为 nil 接口调用方法会产生运行时错误,因为接口的元组内并未包含能够指明该调用哪个 具体 方法的类型。

nil-interface-values.go

  1. package main
  2. import "fmt"
  3. type I interface {
  4. M()
  5. }
  6. func main() {
  7. var i I
  8. describe(i)
  9. i.M()
  10. }
  11. func describe(i I) {
  12. fmt.Printf("(%v, %T)\n", i, i)
  13. }