2
我在golang.org的net
包源代码中看到了这个。关于Go语法的困惑
c, err := dial(network, ra.toAddr(), dialer, d.deadline())
if d.KeepAlive > 0 && err == nil {
if tc, ok := c.(*TCPConn); ok {
tc.SetKeepAlive(true)
tc.SetKeepAlivePeriod(d.KeepAlive)
testHookSetKeepAlive()
}
}
return c, err
什么是c.(*TCPConn)
正是在这种情况下做的?我认为最初它是某种类型的铸造,但它返回2个值到tc
和ok
。
这让我感到困惑。有人可以解释这个代码在做什么吗?
source code here线171