package main import "fmt" type Humaner interface { SayHi() } type Student struct { name string id int } func (tmp *Student) SayHi() { fmt.Printf("Student%s %d sayhi\n", tmp.name, tmp.id) } type Teacher struct { group string addr string } func (tmp *Teacher) SayHi() { fmt.Printf("Teacher%s %s sayhi\n", tmp.group, tmp.addr) } type MyStr string func (tmp *MyStr) SayHi() { fmt.Printf("MyStr %s sayhi", *tmp) } func main() { //定義接口類型的變量 var i Humaner //只是實現了此接口方法的類型,那么這個類型的變量(接收者類型)就可以給i賦值 s := &Student{"mike", 1} i = s i.SayHi() t := &Teacher{"mike", "NJ"} i = t i.SayHi() var str MyStr = "hello mike" i = &str i.SayHi() }
執行結果
Studentmike 1 sayhi Teachermike NJ sayhi MyStr hello mike sayhi