types - 使用类型在 Go 中具有嵌入类型的参数定义函数

标签 types go

Go 的新手,所以可能以错误的方式进行。

假设我有一个类型:

type Message struct {
    MessageID string
    typeID    string
}

然后我创建了另一种嵌入了消息的类型:

type TextMessage struct {
    Message
    Text       string
}

然后我想创建一个可以接受任何类型的函数,只要它嵌入了消息:

func sendMessage(???===>msg Message<===???) error

我该怎么做?我的目标是定义函数,使其需要具有 typeID 成员/字段的类型。如果它采用接口(interface)就可以(但不太理想),在这种情况下我假设我只是定义接口(interface)然后定义适当的方法。但除非这是实现这一目标的唯一方法 - 推荐的方法是什么?

最佳答案

我会走界面路线:

type TypeIdentifier interface {
    TypeId() string
}

func sendMessage(t TypeIdentifier) {
    id := t.TypeId()
    // etc..
}

您唯一的其他选择是在函数内键入断言 interface{}..这将很快变成一碗失控的肉酱。

关于types - 使用类型在 Go 中具有嵌入类型的参数定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747435/

相关文章:

冲突类型

c++ - 如何在 C++ 中将类类型映射到该类的实例?

haskell - 从模块中导出类型运算符

json - 在 Golang 中解析 JSON 以绘制多边形

go - 在函数调用上定义 golang 结构的成本

go - Helm 小枝模板管和/或协商

go - 如何检查元素的 slice 并在值存在或不存在时操作另一个 slice

go - 为什么在检查完请求体后必须关闭请求体?

haskell - 类型类、重载和实例声明

java - 如何创建带参数的泛型实例