1. 程式人生 > >Golang之繼承,多重繼承(struct)

Golang之繼承,多重繼承(struct)

running 結構體 ring style gpo nbsp 結構 繼承 port

熱乎的代碼來了

package main

import "fmt"

/*
繼承
一個結構體嵌到另一個結構體,稱作組合
匿名和組合的區別
如果一個struct嵌套了另一個匿名結構體,那麽這個結構可以直接訪問匿名結構體的方法,從而實現繼承
如果一個struct嵌套了另一個【有名】的結構體,那麽這個模式叫做組合
如果一個struct嵌套了多個匿名結構體,那麽這個結構可以直接訪問多個匿名結構體的方法,從而實現多重繼承
*/

type Car struct {
    weight int
    name   string
}

func (p *Car) Run() {
    fmt.Println(
"running") } type Bike struct { Car lunzi int } type Train struct { Car } func (p *Train) String() string { str := fmt.Sprintf("name=[%s] weight=[%d]", p.name, p.weight) return str } func main() { var a Bike a.weight = 100 a.name = "bike" a.lunzi
= 2 fmt.Println(a) a.Run() var b Train b.weight = 100 b.name = "train" b.Run() fmt.Printf("%s", &b) }

Golang之繼承,多重繼承(struct)