是否可以在不使用嵌入式结构的情况下继承类型的方法?
第一段代码是嵌入Property
结构的工作代码,Node
我可以调用node.GetString
它是一个方法Properties
.我不喜欢这个是我初始化时Node
我有(?)初始化其中的Properties
结构.有没有解决的办法?
package main import "fmt" type Properties map[string]interface{} func (p Properties) GetString(key string) string { return p[key].(string) } type Nodes map[string]*Node type Node struct { *Properties } func main() { allNodes := Nodes{"1": &Node{&Properties{"test": "foo"}}} // :'( singleNode := allNodes["1"] fmt.Println(singleNode.GetString("test")) }
最后,我想做类似以下的事情.哪里Node
是类型Properties
和初始化不需要初始化Property
结构了.以下代码不起作用,但可能清楚我的目标是什么.
package main import "fmt" type Properties map[string]interface{} func (p Properties) GetString(key string) string { return p[key].(string) } type Nodes map[string]*Node type Node Properties func main() { allNodes := Nodes{"1": &Node{"test": "foo"}} // :) singleNode := allNodes["1"] fmt.Println(singleNode.GetString("test")) // :D }
我将添加更多将使用Properties
方法的结构,这就是我要问的原因.如果我只有Node
,我会有方法Node
和做.但是因为我发现有Node
多余的东西可以为嵌入的所有结构添加相同的方法Properties
我想更确切的问题,我想使用Properties
方法Node
而不必初始化Properties
.