Учитывая кодовую настройку, подобную этой,
package main
import (
"fmt"
"reflect"
"runtime/debug"
)
type A struct{}
func (o *A) B() error {
debug.PrintStack()
return nil
}
func main() {
a := &A{}
b := a.B
// Note that if run b(), it can print the stack and show the info
// "(*A).B-fm" and "(*A).B"
m := reflect.ValueOf(b)
fmt.Println(m.Type().String())
}
Возможно ли получить информацию о приемниках b типа A и B в качестве метода?Как, если возможно?
Обратите внимание, что b является значением метода B типа A.
(Возможный сценарий использования, генерация постоянного уникального идентификатора API на основе только такой ссылки, как b, путемформирует строку наподобие (* A) .B . Он используется для создания инструмента отладки без необходимости изменения существующего кода.)
update: