这个问题似乎是Can embedded methods access "parent" fields? ,但在我知道没有办法访问“父”字段的意义上并不是这样;我只是在寻找另一种方法的建议,因为我喜欢结构的想法Pausable
。
我正在尝试制作一个方便的结构,使其他结构能够接收一些暂停/取消暂停的方法。
想象一下:
暂停结构
type Pausable struct {
isPaused bool
}
func (p *Pausable) Pause() {
p.isPaused = true
}
func (p *Pausable) Unpause() {
p.isPaused = false
}
与 Pausable 组合的结构
现在在我的另一个结构上我想覆盖这个Unpause()方法,这样除了改变p.isPaused一些其他东西的值之外也会发生。
type Mystruct struct {
Pausable // Composition
}
func (s *Mystruct) Unpause() {
s.Unpause()
// Do other stuff
}
问题
问题就变成了这样。我想在结构PauseUntil()中添加一个方法Pausable,这样它就变成了
type Pausable struct {
isPaused bool
}
func (p *Pausable) Pause() {
p.isPaused = true
}
func (p *Pausable) Unpause() {
p.isPaused = false
}
func (p *Pausable) PauseUntil(dur time.Duration) {
p.Pause()
go func() {
time.Sleep(dur)
p.Unpause()
}()
}
但是,当超时用完时,Unpause()将在 上调用Pausable,而不是在 上调用Mystruct。解决这个问题的聪明方法是什么?
慕姐8265434
相关分类