1.空接口作为函数参数
使用空接口实现可以接收任意类型的函数参数。
package mian
//golang中空接口可以当作类型使用,表示任何类型
func show(a interface{}) {
fmt.printf("值: %v 类型: %T\n", a, a)
}
func main() {
show(20) //type: int
show("hello golang") //type: string
slice := []int{1, 2, 5, 100} //type: 切片
show(slice)
}
2.类型断言
一个接口的值(简称接口值)是由一个具体类型和具体类型的值两部分组成。这两部分分别称为接口的动态类型和动态值。
如果我们想要判断空接口中值的类型,那么这个时候就可以使用类型断言,其语法格式:
x.(T)
- x:表示类型为interface{}的变量
- T:表示断言x可能的类型。
该语法返回两个参数,第一个参数是x转化为T类型后的变量,第二个值是一个布尔值,若为true则表示断言成功,为false则表示断言失败。
package main
import "fmt"
func main() {
var a interface{}
a = "hello golang"
v, ok := a.(string)
if ok {
fmt.Println("a就是一个string类型,值为:",v)
} else {
fmt.Println("断言失败")
}
}
注意:x.(Type)只能用在switch中