当前位置:  开发笔记 > 编程语言 > 正文

Golang嵌入式结构

如何解决《Golang嵌入式结构》经验,为你挑选了0个好方法。

是否可以在不使用嵌入式结构的情况下继承类型的方法?

第一段代码是嵌入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.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有