随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

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)

}

 

完结

posted @ 2023-04-05 21:56  yangphp  阅读(44)  评论(0编辑  收藏  举报