1、定义一个interface
```
type eat interface {
Eat()
}
```
2、定义一个struct,并实现Eat()方法
```
type Dog struct {
}
func (m Dog) Eat() {
print("dog eat.")
}
```
3、定义两个方法,形参一个eat interface,一个是数组
```
func beginEat(v eat) {
v.Eat()
}
func allBeginEat(ary []eat) {
for _,v:=range ary {
v.Eat()
}
}
```
4、实参为Dog是没问题的,但是数组就会提示类型不匹配。
```
var dog = Dog{}
beginEat(dog)
ary:=make([]Dog,0,2)
allBeginEat(ary) //报错,类型不匹配
```
5、问题:类似这种情形,想传递一个数组的interface,有没有什么办法呢?
完整代码如下:
```
package main
func main() {
var dog = Dog{}
beginEat(dog) //此处正常
var ary []Dog
allBeginEat(ary) //此处会提示类型不一致。
}
type eat interface {
Eat()
}
type Dog struct {
}
func (m Dog) Eat() {
print("dog eat.")
}
func beginEat(v eat) {
v.Eat()
}
func allBeginEat(ary []eat) {
for _, v := range ary {
v.Eat()
}
}
```
有疑问加站长微信联系(非本文作者)