golang interface
阿新 • • 發佈:2018-11-13
介面定義
Interface型別可以定義一組方法,但是這些不需要實現。並且interface不能 包含任何變數。
type Interface interface { test1(a, b int) bool test2() }
interface型別預設是一個指標。
空介面(a interface{})可以被任何型別所實現,如動物可以被貓、狗、人等實現,反之人不一定能實現動物
func main() { var a interface{} var b int a = b fmt.Printf("%T\n", a) var s string a = s fmt.Printf("%T", a) }
介面只是一種規範,並沒有實現,不能直接呼叫
type testInterface int func (t testInterface) test1(a, b int) bool { return a < b } func (t testInterface) test2() { fmt.Println("test2") } func main() { var a Interface a.test2() }
介面實現
Golang中的介面,不需要顯示的實現。只要一個變數,含有介面型別中的所有方法,那麼這個變數就實現這個介面。因此,golang中沒有implement 類似的關鍵字。
type testInterface int func (t testInterface) test1(a, b int) bool { return a < b } func (t testInterface) test2() { fmt.Println("test2") } func main() { var a testInterface fmt.Printf("%T\n", a.test1(1, 2)) a.test2() }
如果一個變數含有了多個interface型別的方法,那麼這個變數就實現了多個 介面。