Go 有沒有辦法從方法值獲取接收者對象?例如,是否有任何這樣的東西MagicFunc可以使以下程序my info從底層 Foo 實例輸出字符串。package mainimport "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)}
2 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
我想深入研究一下,很快就找到了這個文檔:https ://golang.org/s/go11func
正如那里所描述的,whenMyFunc
輸入val
不包含對 f.Bar 的引用,而是對具有簽名的特殊函數的引用func() string
。該函數知道它可以通過檢查眾所周知的寄存器來檢索原始 f 指針R0
(在示例中。在 amd64 上它似乎是dx
,但這顯然是一個實現細節)。
因此,如果不使用特定于實現的匯編代碼就無法做到這一點,這將是非常脆弱的。
- 2 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消