Go 语言 中的空接口是 接口 类型的一种特殊的形式,即是一个没有任何 方法 的接口。因为,空接口没有任何方法,因此,我们可以说 Golang 中的任何 数据类型 都实现了空接口。空接口是任何类型的父接口。
使用空接口保存一个数据的过程会比直接用数据对应类型的 变量 保存稍慢。因此在开发中,应在需要的地方使用空接口,而不是在所有地方使用空接口。
var iname interface{}
我们定义了一个空接口类型的变量 iname,该变量可以保存任何类型的变量。
使用空接口,可以保存任何类型的变量
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
// 使用空接口,可以保存任何类型的变量
var any interface{}
any = 1024
fmt.Println("Any =", any)
any = 1024.1
fmt.Println("Any =", any)
any = "HaiCoder"
fmt.Println("Any =", any)
any = true
fmt.Println("Any =", any)
}
程序运行后,控制台输出如下:
首先,我们定义了一个空接口类型的变量 any,接着,我们分别给空接口变量 any,赋值为 int 类型、float 类型、string 类型 和 bool 类型,并打印。
我们发现,空接口类型的变量可以保存任何类型的变量,并能正确存储对应的值。
从空接口获取变量,必须使用类型转
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
// 从空接口获取变量,必须使用类型转
var any interface{}
any = 1024
fmt.Println("Any =", any)
var i int = any
fmt.Println("I =", i)
}
程序运行后,控制台输出如下:
首先,我们定义了一个空接口类型的变量 any,接着,我们给空接口变量 any,赋值为 int类型的值 1024,并打印。
接着,我们再次将变量 any 直接赋值给 int 类型的变量 i,程序报错,因为空接口的类型不可以直接使用,必须要经过 类型断言转换 之后,才可以使用。
Go 语言中的空接口是接口类型的一种特殊的形式,即是一个没有任何方法的接口。因为,空接口没有任何方法,因此,我们可以说 Golang 中的任何数据类型都实现了空接口。空接口是任何类型的父接口。