【发布时间】:2015-10-02 11:22:20
【问题描述】:
这是有效的代码:
package main
import (
"fmt"
)
type Base struct {
Field int
}
type Derived struct {
Base
}
func main() {
d := &Derived{}
d.Field = 10
fmt.Println(d.Field)
}
这是使用./main.go:17: unknown Derived field 'Field' in struct literal编译失败的代码
package main
import (
"fmt"
)
type Base struct {
Field int
}
type Derived struct {
Base
}
func main() {
d := &Derived{
Field: 10,
}
fmt.Println(d.Field)
}
这里到底发生了什么?对不起,如果很明显,但我就是不明白。
【问题讨论】:
-
停止在 Go 中使用
Base和Derived等术语。 Go 没有继承,如果你试图用一种包含组合的语言来思考继承,你只会让自己感到悲伤。