Идет ли автоматическая привязка функций к структуре? - PullRequest
0 голосов
/ 02 декабря 2018

Скажем, у меня есть это:

type Handler struct{}

func helper(f func()){
   f() // calls h.Mount() or just Mount() w/o reference to h?
}

func (h Handler) Mount() {}

func init(){
  h:=Handler{}
  helper(h.Mount)
}

когда вспомогательный func получает h.Mount (func), может ли он вызывать его напрямую или ему нужна ссылка на обработчик h, чтобы вызвать егодолжным образом?Это компилируется и запускается как есть.

1 Ответ

0 голосов
/ 02 декабря 2018

Да.Книга Go ссылается на это как на значение метода.

Обычно мы выбираем и вызываем метод в том же выражении, что и в p.Distance (), но эти две операции можно разделить.Селектор p.Distance возвращает значение метода, функцию, которая связывает метод (Point.Distance) с конкретным значением получателя p.Эта функция может быть вызвана без значения получателя;ему нужны только аргументы не получателя.

(Источник: язык программирования Go, Донован и Керниган, стр. 164.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...