如何解决无法在多重分配中将 *pubsub.Topic 分配给 mytopic自定义类型
我正在尝试使用 gocloud.dev/pubsub 包在 Go 中创建两个简单的 createTopic() 和 sendMessage() 函数
但是,我收到一条错误消息 ./topic.go:18:15: 不能在多重赋值中将 *pubsub.Topic 分配给 mytopic(类型 mytopic)
代码如下:
main.go
package main
import (
"context"
"log"
_ "gocloud.dev/pubsub/mempubsub"
)
func main() {
mytopic := mytopic{}
ctx := context.Background()
mytopic,err := createTopic(ctx,"mem://topicA")
if err != nil {
log.Fatal("Error occured",err)
}
mytopic.sendMessage(ctx,"hello")
}
topic.go
package main
import (
"context"
"log"
"gocloud.dev/pubsub"
_ "gocloud.dev/pubsub/mempubsub"
)
type mytopic struct {
pubsub.Topic
}
func createTopic(ctx context.Context,url string) (mytopic,error) {
mytopic := mytopic{}
mytopic,err := pubsub.OpenTopic(ctx,"mempubsub")
if err != nil {
log.Fatal("could not open topic: %v",err)
}
defer mytopic.Shutdown(ctx)
return mytopic,err
}
func (t mytopic) sendMessage(ctx context.Context,m string) error {
err := t.Send(ctx,&pubsub.Message{
Body: []byte("Hello,World!\n"),Metadata: map[string]string{
"language": "en","importance": "high",},})
return err
}
有人知道我做错了什么吗?
解决方法
错误消息很好地描述了问题。修复方法如下:
使用指针字段:
type mytopic struct {
*pubsub.Topic
}
将 pubsub.OpenTopic 的返回值赋给字段:
var err error
var mytopic mytopic
mytopic.Topic,err := pubsub.OpenTopic(ctx,"mempubsub")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。