一、定义结构体
type demoS struct{name stringage int}二、定义接口
type demeI interface{demoF1() demoF()}三、方法实现(值接收者和指针接收者)
// 指针接收者func (params *demoS) demoF(){ fmt.Println("------->demoF", params.name,params.age)}// 值接收者func (params demoS) demoF1(){fmt.Println("------->demoF1", params.name,params.age) }四、结构体字面量工厂函数
func createVar(name string, age int) *demoS{ return &demoS{name,age}}五、具体实现
func main(){ var p1 demeI c1 :=createVar1("风舞集",18) p1 = c1 p1.demoF() p1.demoF1()}输出结果
------->demoF 风舞集 18------->demoF1 风舞集 18如果将上面值的接受方式改为指针
func main(){ var p1 demeI c1 :=createVar1("风舞集",18) // 指针接受 p1 = &c1 p1.demoF() p1.demoF1()}发生错误提示
# command-line-arguments./create.go:10:6: cannot use &c1 (type **demoS) as type demeI in assignment: **demoS does not implement demeI (missing demoF method)小结:
在调用过程中会发现,值类型接收者实现接口的时候,不管是类型本身,还是该类型的指针类型,都实现了该接口
指针类型接收者实现接口的时候,只有对应的指针类型才被认为实现了该接口。
| 留言与评论(共有 0 条评论) “” |