Go语言中的空接口是接口类型的一种特殊的形式,即是一个没有任何方法的接口。因为,空接口没有任何方法,因此,我们可以说 Golang 中的任何 数据类型 都实现了空接口。空接口是任何类型的父接口。

使用空接口保存一个数据的过程会比直接用数据对应类型的变量保存稍慢。因此在开发中,应在需要的地方使用空接口,而不是在所有地方使用空接口。

任何变量都可以赋值给interface{}类型的变量。

空接口的定义方式:

type emptyInt interface {}

// 声明一个空接口实例
var i interface{}

//再比如函数使用空接口类型参数:
func myfunc(i interface{})

通过空接口类型,Go也能像其它动态语言一样,在数据结构中存储任意类型的数据。

结构体与接口的区别:

结构体:由不同类型的元素组合而成。
1、struct结构体中的类型可以是任意类型;

接口:
接口是一组方法的签名的集合。
接口定义方法名,Golang中的接口,不需要显示的实现。Interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。

只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口.

空结构体表示一个占位符,
空接口表示一个类型

参考: https://blog.csdn.net/whhcs/a...


goper
413 声望25 粉丝

go 后端开发