首页 > 其他 > 详细

golang - interface的作用

时间:2017-05-26 00:11:51      阅读:495      评论:0      收藏:0      [点我收藏+]

多态。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的作用

原文:http://www.cnblogs.com/lemos/p/6906461.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!