登录
首页 >  Golang >  Go问答

在 Go 中表示其中之一/联合的惯用方式

来源:stackoverflow

时间:2024-04-14 20:06:33 237浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《在 Go 中表示其中之一/联合的惯用方式》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我正在寻求实现一个可以是 foo 或 bar 的结构。

所以现在我有:

type Foo struct{}
type Bar struct{} 

// This is the end version consumed by my package
type Baz struct {
  Foo Foo `json:"foo,omitempty"`
  Bar Bar `json:"bar,omitempty"`
  // ... there are different members here
}

然后在我的内部函数中,我需要检查 baz 是否包含 foo 或 bar 并以不同的方式处理它们。

有没有惯用的方法来处理这个问题?现在我正在检查 foo 的成员是否是默认值,但这感觉很hacky。

我考虑过创建成员指针,以便它们可以为空,然后我可以检查它们是否为零。

我在这里遗漏了什么吗?


解决方案


您正在寻找 algebraic data types。其想法是定义您的“不同类型”实现的接口,并将该接口存储在预期的位置。

本篇关于《在 Go 中表示其中之一/联合的惯用方式》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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