1. 程式人生 > >go struct的巢狀/組合以及interface

go struct的巢狀/組合以及interface

      看程式碼:

package main 
import "fmt"

type Intf interface {
	process()
}

type MsgBase struct {
	id int
}

func (p *MsgBase) process() {
	fmt.Printf("base %v\n", p)
}

type Msg1 struct {
	MsgBase
	x int
}

type Msg2 struct {
	MsgBase
	x int
	y int
}

func (p *Msg1) process() {
	fmt.Printf("business %v\n", p)
}

func main() {
	var m Intf = new(Msg1)   // 不能用var m MsgBase = new(Msg1)
	m.process()

	m = new(Msg2)
	m.process()
}

         結果:

business &{{0} 0}
base &{0}

  

        不多收。