Go 无法在多次分配中将*pubsub.Topic分配给mytopic(键入custom)

Go 无法在多次分配中将*pubsub.Topic分配给mytopic(键入custom),go,publish-subscribe,google-cloud-pubsub,Go,Publish Subscribe,Google Cloud Pubsub,我正在尝试使用包gocloud.dev/pubsub在Go中创建两个简单的createTopic()和sendMessage()函数 然而,我得到了一个错误的说法 ./topic.go:18:15:无法在多次分配中将*pubsub.topic分配给mytopic(键入mytopic) 代码如下所示: main.go package main import ( "context" "log" _ "gocloud.de

我正在尝试使用包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")
}

有人知道我做错了什么吗?

错误消息很好地描述了问题。以下是修复方法:

使用指针字段:

type mytopic struct {
    *pubsub.Topic
}
将pubsub.OpenTopic的返回值分配给字段:

var err error
var mytopic mytopic
mytopic.Topic, err := pubsub.OpenTopic(ctx, "mempubsub")
var err error
var mytopic mytopic
mytopic.Topic, err := pubsub.OpenTopic(ctx, "mempubsub")