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/