1. 程式人生 > >go的interface示例

go的interface示例

        看程式:

package main 
import "fmt"

type BaseIntf interface {
	Process()
}

type Msg1 struct {
	req int
	rsp int
}

func (p *Msg1) Process()  {
	fmt.Println("process 1")
}

type Msg2 struct {
	req int
	rsp int
}

func (p *Msg2) Process()  {
	fmt.Println("process 2")
}

func main() {
	m1 := new(Msg1)
	m1.Process()

	m2 := new(Msg2)
	m2.Process()
}

        變一下:

package main 
import "fmt"

type BaseIntf interface {
	Process()
}

func Run(proc BaseIntf) {
	fmt.Println("run")
	proc.Process()
}

type Msg1 struct {
	req int
	rsp int
}

func (p *Msg1) Process()  {
	fmt.Println("process 1")
}


type Msg2 struct {
	req int
	rsp int
}

func (p *Msg2) Process()  {
	fmt.Println("process 2")
}


func main() {
	m1 := new(Msg1)
	Run(m1)

	m2 := new(Msg2)
	Run(m2)
}

         這種風格的程式碼,見了很多次了。

         不多說。