go语言学习接口实现详情(一)

一、定义结构体

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 条评论) “”
   
验证码:

相关文章

推荐文章