24.Go面向对象-空接口
8 空接口
空接口(interface{}
)不包含任何的方法,正因为如此,所有的类型都实现了空接口,因此空接口可以存储任意类型的数值。
例如:
代码语言:javascript复制// 空接口万能类型,保存任意类型的值
var i interface{} = 1
fmt.Println("i = ", i)
i = "abc"
fmt.Println("i = ", i)
当函数可以接受任意的对象实例时,我们会将其声明为interface{}
,最典型的例子是标准库fmt
中PrintXXX
系列的函数,例如:
func Printf(format string, a ...interface{}) (n int, err error) {
return Fprintf(os.Stdout, format, a...)
}
func Println(a ...interface{}) (n int, err error) {
return Fprintln(os.Stdout, a...)
}
如果自己定义函数,可以如下:
代码语言:javascript复制func Test(arg ...interface{}) {
}
Test()
函数可以接收任意个数,任意类型的参数。