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