Я прихожу в Голанг из Python и пытаюсь обернуть голову вокруг различных новых концепций.
Одна вещь, с которой я столкнулся, - это функция в net.go:
func (c *conn) ok() bool { return c != nil && c.fd != nil }
Эта функция вызывается несколькими методами net.go, например, conn.Read:
// Read implements the Conn Read method.
func (c *conn) Read(b []byte) (int, error) {
if !c.ok() {
return 0, syscall.EINVAL
}
Я пытаюсь понять, как метод ok()
можно вызывать на conn, несмотря на то, чточто ok()
не не представляется интерфейсом conn.
Конечно, я не могу вызвать ok()
из моего клиентского кода:
func main() {
conn, err := net.Dial("tcp", "www.reddit.com:80")
if err != nil {
os.Exit(-1)
}
fmt.Println(&conn.ok())
}
Вывод:
./server.go:14:22: conn.ok undefined (type net.Conn has no field or method ok)
Любые указатели оценены ...