type FuncPtr func(int) int
func Foo(i int) { return i * i }
type Events struct {
SomeFunc FuncPtr
}
type Top struct {
events Events
}
func (self *Top) initEvents() {
// This change works within this function, but
// doesn't stick around after this method returns.
self.events.SomeFunc = Foo
}
func main() {
var t := Top{}
t.initEvents()
t.events.SomeFunc == nil // True: Change in initEvents() doesn't stick
}
如何使initEvents()
方法中的更改持續存在?也就是說,我想在initEvents()
方法中更改函數引用Top::Events::SomeFunc
的值,並且一旦initEvents()
方法返回,該更改將繼續。如何更改方法內的函數引用字段?
恐怕你的代碼工作正常:'t.events.SomeFunc'是不是'在所有nil'(點擊此處查看:HTTPS: // p lay.golang.org/p/s2da81Jnmg)。或者我錯了,問題在別的地方? – tomasz 2014-12-04 16:38:09
似乎工作正常,只是將Foo func聲明更改爲返回int('func Foo(i int)int {return i * i}') – Makpoc 2014-12-04 16:41:02
@tomasz啊,您的測試讓我意識到這與如何處理我實際上是在我的代碼中調用它(查看循環):https://play.golang.org/p/P_j4_szh2J – Dess 2014-12-04 16:51:04