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
}