go - 给定方法值,获取接收者对象

标签 go

Go中有没有一种方法可以从方法值中获取接收者对象?

例如,是否存在这样的MagicFunc,它将使以下程序从基础Foo实例输出字符串my info

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)
}

最佳答案

不,不可能获得该方法的接收者实例。

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

关于go - 给定方法值,获取接收者对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040161/

相关文章:

json.Marshal 自定义类型为 base64 字符串

go - 将指针传递给接口(interface)时函数抛出错误?

go - Cosmos SDK 帐户序列不匹配

function - 初始化函数字段

module - 从 *_test 包访问函数

go - 这是基于消息总线的发布-订阅模式吗?

json - 我正在尝试打印 JSON

sql - Go SQL 扫描/值接口(interface)问题

Mysql自增Id在使用prepared statements时不按顺序

go - 执行命令等待它完成,并在Go中发送实时输出