空接口

指定了零个方法的接口值被称为 空接口:

  1. interface{}

空接口可保存任何类型的值。(因为每个类型都至少实现了零个方法。)

空接口被用来处理未知类型的值。例如,fmt.Print 可接受类型为 interface{} 的任意数量的参数。

empty-interface.go

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