首页 > 解决方案 > 给定一个方法值,获取接收者对象

问题描述

Go 中有没有办法从方法值中获取接收者对象?

例如,是否有任何这样的东西MagicFunc会使以下程序my info从底层 Foo 实例输出字符串。

package main

import "fmt"

type Foo struct {
    A string
}

func (foo *Foo) Bar() string {
    return "bar"
}

func MyFunc(val interface{}) {
    i := MagicFunc(val)
    f := i.(Foo)
    fmt.Println(f.A)
}

func main() {
    f := Foo{A: "my info"}
    MyFunc(f.Bar)
}

标签: go

解决方案


不,不可能获取方法的接收器实例。

如果您使用方法表达式而不是方法值,则最多可以获得接收者的类型,但这无助于您获取my info字符串。


推荐阅读