3 回答

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ù)本身。

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ù)。
- 3 回答
- 0 關(guān)注
- 192 瀏覽
添加回答
舉報