go接口的定义 以及空接口
前言:
接口只有方法,并且方法里没有方法体,没有变量
接口中每个方法都要被一个类型实现,那么该类型就实现了该接口
接口定义了某个类型(对象)必须具备的功能,接口里面的方法是该类型最基本的功能,所以需要都实现。
那么实现接口后,直接实例化对象调用接口即可。
正文:
接口命名:
接口类型名,命名时一般在后面+er
接口名以及方法名首字母大写可以被其他包访问,小写私有,不可以访问。
1、接口定义
type Personer interface {
Eat(food string)
Sleep()
}
2、接口调用
当 user 对象实现了Personer接口后,即可通过对象调用
user.Eat("food")
user.Sleep()
空接口:
空接口是指没有定义任何接口方法的接口。
Go中的任意对象都已经实现空接口(因为没方法需要实现)
任意对象都可以保存到空接口实例变量中。
空接口切片定义:
userInfo := make([]interface{}, 2)
userInfo[0] = "lampol"
userInfo[1] = 45
fmt.Println(userInfo)
空接口Map
userInfo := map[interface{}]interface{}{
"name": "yangphp",
"age": 32,
"email": "1111@qq.com",
}
或
userInfo := make(map[interface{}]interface{}, 4)
参数作为空接口
参数作为空接口,是可以传递任何值的
func show(arg interface{}) { //可以传任何值都可以
fmt.Printf("%T %v \n", arg, arg)
}
完结
但行好事,莫问前程!
本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/17291066.html