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

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

在 Go 中從函數(shù)創(chuàng)建方法的簡單方法是什么?

在 Go 中從函數(shù)創(chuàng)建方法的簡單方法是什么?

Go
慕森卡 2021-12-07 10:05:03
使用方法表達式從方法中獲取函數(shù)非常簡單func (t T) Foo(){}Foo := T.Foo       //yelds a function with signature Foo(t T)現(xiàn)在假設(shè)我已經(jīng)有了func Foo(t T)我可以在T.Foo()不重寫的情況下獲得方法,或者至少是簡單的方法嗎?
查看完整描述

3 回答

?
MMTTMM

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

如果你想保留 function Foo(t T),例如為了向后兼容,你可以簡單地定義一個調(diào)用已經(jīng)存在的函數(shù)的 struct 方法:


type T struct {

    // ...

}


func Foo(t T) {

    // ...

}


// Define new method that just calls the Foo function

func (t T) Foo() {

    Foo(t)

}

或者,您可以輕松地將函數(shù)簽名從 更改func Foo(t T)為func (t T) Foo()。只要不更改 的名稱t,就不必再重寫函數(shù)本身。


查看完整回答
反對 回復(fù) 2021-12-07
?
一只萌萌小番薯

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

假設(shè) T 是一個結(jié)構(gòu)體,你可以:


func (t T) Foo() {

    Foo(t)

}


查看完整回答
反對 回復(fù) 2021-12-07
?
翻過高山走不出你

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

其他人已經(jīng)指出了做到這一點的最佳方法:


func (t T) Foo() { Foo(t) }

但是如果您出于某種原因需要在運行時執(zhí)行此操作,您可以執(zhí)行以下操作:


func (t *T) SetFoo(foo func(T)) {

    t.foo = foo

}


func (t T) CallFoo() {

    t.foo(t)

}

游樂場:http : //play.golang.org/p/A3G-V0moyH。


這顯然不是你通常會做的事情。除非有原因,否則我建議堅持使用方法和函數(shù)。


查看完整回答
反對 回復(fù) 2021-12-07
  • 3 回答
  • 0 關(guān)注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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