golang interface
Posted lc161616
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang interface相关的知识,希望对你有一定的参考价值。
接口定义
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 ", 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 ", a.test1(1, 2)) a.test2() }
如果一个变量含有了多个interface类型的方法,那么这个变量就实现了多个 接口。
以上是关于golang interface的主要内容,如果未能解决你的问题,请参考以下文章