我net在 golang.org 上的包源代码中看到了这一点。
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。
这让我很困惑。有人可以解释一下这段代码在做什么吗?
哆啦的时光机
相关分类