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接口的入门(大白话)