码迷,mamicode.com
首页 > 其他好文 > 详细

golang - interface的作用

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

标签:代码   tcp   作用   lang   没有   class   方法   子接口   源码   

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

标签:代码   tcp   作用   lang   没有   class   方法   子接口   源码   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!