登录
首页 >  Golang >  Go问答

Golang 结构的指针字段在地图上

来源:stackoverflow

时间:2024-02-07 22:12:19 234浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《Golang 结构的指针字段在地图上》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我想在映射中包含不同的结构指针字段,如下所示。 (当然下面的代码不起作用)

type StructA struct {

}
type StructB struct {
    
}

mymap := map[string]*struct{}{
    "StructA": StructA,
    "StructB": StructB,
}

正确答案


正如@icza所说,映射的元素类型必须是特定类型。但这可能是一个可以存储不同类型对象的接口。类型 anyinterface{} 的别名在某些方面类似于指针(尽管它也存储类型信息),因此您可以这样做:

mymap := map[string]inteface{}{
    "structa": structa{},
    "structb": structb{},
}

为了更安全一点,您可以将可以添加到映射的类型限制为仅两个结构。为此,您需要一个接口来指定这两种结构类型都实现的函数。

type (
    Common interface{ ImplementsCommon() }
    A      struct{}
    B      struct{}
)

func (A) ImplementsCommon() {}
func (B) ImplementsCommon() {}

    mymap := map[string]Common{
        "A": A{},
        "B": B{},
    }

Go Playground上尝试一下

好了,本文到此结束,带大家了解了《Golang 结构的指针字段在地图上》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>