conn.Read一般来说,可重试的操作不会出现任何错误。该界面的大多数使用io.Reader都会假设所有错误都是最终的。任何net确保可重试的包错误都将符合接口net.Error,并公开一个Temporary方法。这最常在Accept循环中使用,就像 http 包中的这个解释示例一样for { rw, e := l.Accept() if e != nil { if ne, ok := e.(net.Error); ok && ne.Temporary() { if tempDelay == 0 { tempDelay = 5 * time.Millisecond } else { tempDelay *= 2 } if max := 1 * time.Second; tempDelay > max { tempDelay = max } time.Sleep(tempDelay) continue } return e }}任何其他可能的情况都需要在了解协议和当前情况的情况下根据个人情况进行处理。