对Go来说很新,所以可能以错误的方式解决这个问题。
我们说我有一个类型:
type Message struct {
MessageID string
typeID string
}
我创建了另一个嵌入了Message的类型:
type TextMessage struct {
Message
Text string
}
然后我想创建一个可以采用任何类型的函数,只要它嵌入了Message:
func sendMessage(???===>msg Message<===???) error
我该怎么做?我的目标是定义函数,使其需要具有typeID成员/字段的类型。如果它采用了接口,那就没问题(但不太理想),在这种情况下,我假设我只是定义接口,然后定义适当的方法。但除非这是实现这一目标的唯一方法 - 推荐的方法是什么?
答案 0 :(得分:1)
我会去接口路线:
type TypeIdentifier interface {
TypeId() string
}
func sendMessage(t TypeIdentifier) {
id := t.TypeId()
// etc..
}
你唯一的另一个选择是在函数中键入一个interface{}
,这将很快变成一个失控的碗肉酱。