接口可以很好的封裝有同一類功能的方法
首先在具體實現裏面定義自己的實現,這邊定義了2個
type Cat struct{} func (c *Cat) Call() { fmt.Println("miao,miao...") } func (c *Cat) Eat() { fmt.Println("fish") } /////// type Dog struct{} func (d *Dog) Call() { fmt.Println("wang,wang...") } func (d *Dog) Eat() { fmt.Println("meat") }
然後定義接口
type Animal interface { Call() Eat() }
具體實現
func TestReflect(t *testing.T) { d := Dog{} d.Call() d.Eat() c := Cat{} c.Call() c.Eat() }
輸出內容:
func TestReflect(t *testing.T) { animalMap := map[string]Animal{} animalMap["cat"] = &Cat{} animalMap["dog"] = &Dog{} animalMap["cat"].Call() animalMap["cat"].Eat() }