go 关于接口的实现

package main

import "fmt"

type I interface {
	Io() error
}

type A struct {
}

func (r *A) Io() error {
	fmt.Println("a i")
	return nil
}

type B struct {
	*A //使用匿名方式,才会隐式实现A所继承的接口
}

//自定义实现接口,类似于重写
func (r *B) Io() error {
	fmt.Println("b i")
	return nil
}

func p(i I) {
	_ = i.Io()
}

func main() {
	var a A
	j := &a
	var b B
	i := &b
	//p(b)//不可行,应使用指针型
	p(j) //a i
	p(i) //b i
}
发布了32 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/takujo/article/details/103937707