多態:
定義一個接口類型,但是可以創建任意的實現類的對象。
直接上代碼舉例說明
package main import "fmt" type Run interface { run() } type Runner struct { name string } func (r Runner) run() { fmt.Println(r.name,",開始跑步。。。慢跑") } type Pig struct { name string } func (p Pig) run() { fmt.Println(p.name,",撅着屁股跑。。。") } // 定義一個函數: func testRun(r Run) { // 將接口作爲參數,可以傳入的任意是實現類的對象。 r.run() } func main() { /* 多態:事物的多種形態 靠接口實現:定義接口類型,創建任意的實現類對象。 定義接口類型的對象,但是實際上可以創建該接口的任意實現那類的對象。 接口類型的對象,不能訪問實現類中的字段的。 */ var r1 Run // 對象的聲明 r1 = Runner{"跑步者"} r1.run() r1 = Pig{"佩奇"} r1.run() //r1.name //語法錯誤,接口類型對象,不能訪問實現類的字段 testRun(Pig{"二師兄"}) }