@iihaarr

Как передать указатель на метод структуры в map?

Есть некая структура:
type someStruct struct {
    ...
}

У структуры есть методы:
func (s *someStruct) method1([]int, int) int
func (s *someStruct) method2([]int, int) int
...

Ввел алиас для методов:
type methodPtr func (*someStruct, []int, int) int
Пытаюсь засунуть ее в мапу:
var m = map[int]methodPtr{
    0: (&someStruct).method1
}

Выдает ошибку: Cannot use '(&someStruct).method' (type func (*someStruct, []int, int) int) as the type methodPtr
Как засунуть в мапу указатель на метод?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 2
Maksclub
@Maksclub
maksfedorov.ru
у вас расхождение типов methodPtr и методов

скрин
64864a9db60f0498967248.png
Ответ написан
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Похоже вы пытаетесь использовать Method expressions https://go.dev/ref/spec#Method_expressions И так можно, только нужно:
var m = map[int]methodPtr{
	0: (*someStruct).method1,
}
Работающий код https://go.dev/play/p/0TqJTmuEGHU
Правда, на мой взгляд, не очень удобно)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
02 мая 2024, в 14:44
500 руб./за проект
02 мая 2024, в 14:36
3000 руб./за проект
02 мая 2024, в 14:29
30000 руб./за проект