我的目标是将功能嵌入到现有类型中。
我正在遵循Effective Go。
问题是它警告
当前的解决方案是创建
我正在遵循Effective Go。
问题是它警告
var parent *embedding.Parent github.com/kidfrom/learn-golang/embedding.Child struct literal uses unkeyed fields
。当前的解决方案是创建
NewChild(parent *Parent) *Child
。然而,我担心这只是在愚弄编译器,在未来会出现意外的恐慌,那么我做错了什么?func NewChild(parent *Parent) *Child {
return &Child{parent}
}
cmd/test/main.go
package main
import "github.com/kidfrom/learn-golang/embedding"
func main() {
parent := &embedding.Parent{}
child := &embedding.Child{parent} // it warns `var parent *embedding.Parent
github.com/kidfrom/learn-golang/embedding.Child struct literal uses unkeyed fields`
child.CallParentMethod()
}
embedding.go
package embedding
import "fmt"
type Parent struct{}
func (p *Parent) parentMethod() {
fmt.Println("parent method")
}
type Child struct {
*Parent
}
func (c *Child) CallParentMethod() {
c.parentMethod()
}