package main
import "fmt"
func main() {
t16()
}
type Base struct {
val int
}
func (b *Base)Set(i int) {
b.val = i
}
type Sub struct {
Base
changed bool
}
func (b *Sub)Set(i int) {
b.val = i
b.changed = true
}
func t16() {
s := &Sub{}
s.Base.Set(1)
var b *Base = &s.Base
fmt.Printf("%+v\n", b)
fmt.Printf("%+v\n", s)
}
我要讓子充當基地,但是當我打電話集,子它將標誌着changed.I知道有在golang中沒有多態或代理,但有沒有辦法做到這一點,而不是影響基地?
修訂
我希望當我打電話Base.Set它將標誌着在變化,用戶,他們不知道他們實際使用的分,這樣我就可以監視基地的行爲。
func t16() {
s := &Sub{}
var b *Base = &s.Base
b.Set(10)
fmt.Printf("%+v\n", b)
fmt.Printf("%+v\n", s)
}
如果是這樣,那麼你是正確的,接口是要走的路。 Go沒有'is-a'類型的繼承。 – captncraig