蚌埠網(wǎng)站制作seo 頁面
前言
在Go語言中,接口類型(interface)完全可以作為一個函數(shù)的參數(shù)。這是Go語言多態(tài)性的一個重要體現(xiàn),允許函數(shù)接受任何實現(xiàn)了接口中定義的方法的類型的實例。
一、接口(interface)定義
type Reader interface {Read() string
}
定義interface接口包含相應(yīng)的方法。
二、定義結(jié)構(gòu)體實現(xiàn)interface中的方法?
// MyStruct 是一個結(jié)構(gòu)體,它將實現(xiàn) Reader 接口
type MyStruct struct {Message string
}// Read 方法使得 MyStruct 實現(xiàn)了 Reader 接口
func (ms MyStruct) Read() string {return ms.Message
}
MyStruct是一個結(jié)構(gòu)體,Message作為結(jié)構(gòu)體中的字段,MyStruct結(jié)構(gòu)體實現(xiàn)了Read的方法就這樣實現(xiàn)了該接口。
三、定義公共函數(shù)接受接口(interface)類型的參數(shù),并調(diào)用其方法
func processItem(reader Reader) {content := reader.Read()fmt.Println("Read content:", content)
}
四、主函數(shù)調(diào)用?
func main() {// 創(chuàng)建 MyStruct 的實例myInstance := MyStruct{Message: "Hello, World!"}// 將 MyStruct 的實例作為 Reader 接口類型的參數(shù)傳遞給 processItem 函數(shù)processItem(myInstance)
}
?不同的struct可分別interface中的方法實現(xiàn),再將實例后的struct傳遞給公共的處理函數(shù),以此實現(xiàn)一個go語言中的多態(tài)性。