首页

/

归档

/

友链

/

Github

/

模拟面试

/

独立黑客

/

资料

/

订阅

/

RSS

/

关于我


Go类型嵌套

Go没有继承,但是有类型嵌套,主要有三种使用方式,使用类型嵌套,wrapper可以自动获得被嵌套类型的所有方法。接下来我们分别看 三种情况下的例子:

package main

import (
    "fmt"
)

type Foo struct{}

func (f Foo) SayFoo() {
    fmt.Println("foo")
}

type Bar struct {
    Foo
}

func main() {
    b := Bar{}
    b.SayFoo()
}
type Reader interface {
    Read(p []byte) (n int, err error)
}

type Writer interface {
    Write(p []byte) (n int, err error)
}

type ReadWriter interface {
    Reader
    Writer
}
package main

import (
    "fmt"
)

type Foo interface {
    SayFoo()
}

type foo struct{}

func (f foo) SayFoo() {
    fmt.Println("foo")
}

type Bar struct {
    Foo
}

func main() {
    b := Bar{foo{}} // 传入一个符合 Foo 这个接口的实例

    b.SayFoo()
}