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)
}
package main
type Person struct {
name string
age int
}
type Cat struct {
kind string
sex bool
price int
}
func main() {
family := make([]interface{},0,10)
obj1 := Person{
name: "呂云飛",
age: 28,
}
obj2 := Person{
name: "胡景茹",
age: 18,
}
obj3 := Cat{
kind: "英短",
sex: true,
price: 2000,
}
family = append(family, obj1, obj2, obj3)
for _, value := range family {
switch obj := value.(type) {
case *Person:
print(obj.name + "\n")
case *Cat:
print(obj.kind + "\n")
}
}
}