第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

給定方法值,獲取接收者對象

給定方法值,獲取接收者對象

Go
慕斯王 2023-08-07 14:46:31
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 回答

?
九州編程

TA貢獻1785條經(jīng)驗 獲得超4個贊

不,不可能獲取該方法的接收器實例。

如果您使用方法表達式而不是方法值,您最多可以獲得接收者的類型,但這不會幫助您獲取字符串my info。


查看完整回答
反對 回復(fù) 2023-08-07
?
慕桂英546537

TA貢獻1848條經(jīng)驗 獲得超10個贊

我想深入研究一下,很快就找到了這個文檔:https ://golang.org/s/go11func

正如那里所描述的,whenMyFunc輸入val不包含對 f.Bar 的引用,而是對具有簽名的特殊函數(shù)的引用func() string。該函數(shù)知道它可以通過檢查眾所周知的寄存器來檢索原始 f 指針R0(在示例中。在 amd64 上它似乎是dx,但這顯然是一個實現(xiàn)細節(jié))。

因此,如果不使用特定于實現(xiàn)的匯編代碼就無法做到這一點,這將是非常脆弱的。


查看完整回答
反對 回復(fù) 2023-08-07
  • 2 回答
  • 0 關(guān)注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號