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

В Go нет возможности напрямую сохранить указатель на метод структуры в map или любой другой контейнер. Однако, можно достичь такого желаемого поведения, используя тип функции, который может включать указатель на метод структуры.

Для этого вы должны сначала определить тип функции, который соответствует указателю на метод структуры. Допустим, у вас есть структура с методом "DoSomething":

type MyStruct struct {
    // поля структуры
}

func (s *MyStruct) DoSomething() {
    // реализация метода
}

Теперь нужно определить тип функции, которая может быть использована для вызова метода "DoSomething":

type MyStructMethod func(*MyStruct)

Теперь мы можем создать карту, которая содержит функции-обертки для методов структуры:

func main() {
    myMap := make(map[string]MyStructMethod)
    
    instance := &MyStruct{}
    myMap["method"] = instance.DoSomething

    // чтобы вызвать сохраненный метод
    myMap["method"](instance)
}

В приведенном выше примере мы создаем экземпляр карты "myMap", которая содержит функцию-обертку для метода "DoSomething". Когда мы вызываем "myMap["method"](instance)", мы вызываем сохраненный метод.

Таким образом, мы обошли отсутствие возможности сохранения указателя на метод структуры в map, используя тип функции и функцию-обертку для вызова метода. Это позволяет нам создать карту, которая может хранить указатели на методы структуры в Go.