使用参数定义函数,其类型在Go中具有嵌入类型

时间:2014-11-05 00:04:46

标签: types go

对Go来说很新,所以可能以错误的方式解决这个问题。

我们说我有一个类型:

type Message struct {
    MessageID string
    typeID    string
}

我创建了另一个嵌入了Message的类型:

type TextMessage struct {
    Message
    Text       string
}

然后我想创建一个可以采用任何类型的函数,只要它嵌入了Message:

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

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

1 个答案:

答案 0 :(得分:1)

我会去接口路线:

type TypeIdentifier interface {
    TypeId() string
}

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

你唯一的另一个选择是在函数中键入一个interface{},这将很快变成一个失控的碗肉酱。