开发过程中一个问题, 大概是这样的, 提炼出来一目了然, 做一下记录
package main
import "fmt"
type MyInterFace interface {
Hello()
}
type Mystruct struct {
Name string
}
func (m *Mystruct) Hello() {
fmt.Println("Hello")
}
func MyFunction(mi MyInterFace) {
mi.Hello()
}
func main() {
ms := Mystruct{Name: "123"}
MyFunction(ms)
}
这里MyFunction不能传入结构体作为变量, 应该传入结构体指针, 因为在结构体实现Hello函数的时候, 是用的结构体指针, 所以*Mystruct才实现了接口, 可以传入
而Mystruct, 没有实现接口, 不是MyInterface类型
//main函数修改为
func main() {
ms := &Mystruct{Name: "123"}
MyFunction(ms)
}