golang - interface的作用

Posted Lemo_wd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang - interface的作用相关的知识,希望对你有一定的参考价值。

多态。struct 可以赋值给 interface。interface 可以转换成子接口,或者 struct。

请看go中的一段的源代码:

listener, _ := net.Listen("tcp", "localhost:8000")
tcpListener := listener.(*net.TCPListener)
conn,_ := tcpListener.Accept()

仔细拜读源码可知:

net.Listen() 返回了一个 Listener接口,而 *TCPListener本身实现了该接口,所以可以转换成 TCPListener,再调用其Accept()。

实际上,并没有必要显示地转换:

listener, _ := net.Listen("tcp", "localhost:8000")
conn,_ := listener.Accept()

由源码可知,Listen(tcp,url) 函数实际返回的是 *TCPListener  或者 *UnixListener,只不过返回的值赋给了 Listener接口。而在调用该接口的 Accept()方法时,为TCPListener  或者 UnixListener的方法。

以上是关于golang - interface的作用的主要内容,如果未能解决你的问题,请参考以下文章

golang reflect反射(一):interface接口的入门(大白话)

golang goroutine例子[golang并发代码片段]

golang代码片段(摘抄)

golang中interface接口的深度解析

请教JAVA中interface的作用

Golang Interface 解析