空接口的定义

空接口是指没有定义任何方法的接口。因此任何类型都实现了空接口


空接口类型的变量可以存储任意类型的变量。

:::warning interface - 关键字

interface{} - 空接口

:::

  1. func main() {
  2. // 定义一个空接口x
  3. var x interface{}
  4. s := "Hello 沙河"
  5. x = s
  6. fmt.Printf("type:%T value:%v\n", x, x)
  7. i := 100
  8. x = i
  9. fmt.Printf("type:%T value:%v\n", x, x)
  10. b := true
  11. x = b
  12. fmt.Printf("type:%T value:%v\n", x, x)
  13. }

空接口的应用

空接口作为函数的参数

使用空接口实现可以接收任意类型的函数参数。

  1. func main() {
  2. show(10) //type:int value:10
  3. show("sam") //type:string value:sam
  4. }
  5. func show(a interface{}) {
  6. fmt.Printf("type:%T value:%v\n", a, a)
  7. }

空接口作为map的值

使用空接口实现可以保存任意值的字典。

  1. // 空接口作为map值
  2. var studentInfo = make(map[string]interface{})
  3. studentInfo["name"] = "沙河娜扎"
  4. studentInfo["age"] = 18
  5. studentInfo["married"] = false
  6. fmt.Println(studentInfo)