24.Go面向对象-空接口

2021-08-25 15:08:23 浏览数 (1)

24.Go面向对象-空接口

8 空接口

空接口(interface{})不包含任何的方法,正因为如此,所有的类型都实现了空接口,因此空接口可以存储任意类型的数值。

例如:

代码语言:javascript复制
// 空接口万能类型,保存任意类型的值
var i interface{} = 1
fmt.Println("i = ", i)

i = "abc"
fmt.Println("i = ", i)

当函数可以接受任意的对象实例时,我们会将其声明为interface{},最典型的例子是标准库fmtPrintXXX系列的函数,例如:

代码语言:javascript复制
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()函数可以接收任意个数,任意类型的参数。

0 人点赞