我有一个可变参数函数Result func Results(messages ...Message)
,它接受一个接口Message
。如果我传递一个Message类型的消息,但是如果我传递一条消息Result(slice...)
这是我得到的错误:
prog.go:38: cannot use messages (type []*SampleMessage) as type []Message in argument to Results
答案 0 :(得分:2)
您需要稍微重组一下。问题是[]*SampleMessage
无法转换为[]Message
。但是,处理此问题的方法是将messages
切片声明为[]Message
类型。然后,您可以毫无问题地将SampleMessage
的实例附加到它,并使用...
语法将它们传递到您的可变参数函数中。这是你的例子被修改为编译; http://play.golang.org/p/cQUIZTz_vo - 只有更改位于我拥有var messages []Message
的主要广告的第一行。如果您尝试以相反的顺序执行此操作(例如使用[] * SampleMessages,然后在传递时使用[]Message(messages)
进行转换)它将失败。据我所知,这是解决问题的最实用方法。