在golang中将struct上的方法作为回调传递

在golang中将struct上的方法作为回调传递,go,Go,是否可以在golang中将结构上的方法作为回调函数传递 例如,注册消息处理程序: func (mc MQTTClient) MessageHandler(client MQTT.Client, msg MQTT.Message) { fmt.Printf("TOPIC: %s\n", msg.Topic()) fmt.Printf("MSG: %s\n", msg.Payload()) } func (mc MQTTClient) AddMessageHandler(){ //

是否可以在golang中将结构上的方法作为回调函数传递

例如,注册消息处理程序:

func (mc MQTTClient) MessageHandler(client MQTT.Client, msg MQTT.Message) {
   fmt.Printf("TOPIC: %s\n", msg.Topic())
   fmt.Printf("MSG: %s\n", msg.Payload())
}

func (mc MQTTClient) AddMessageHandler(){
  //..
  //subscribe to the topic /go-mqtt/sample and request messages to be delivered
  //at a maximum qos of zero, wait for the receipt to confirm the subscription

  if token := c.Subscribe("go-mqtt/sample", 0, mc.MessageHandler); token.Wait() && token.Error() != nil {
                    fmt.Println(token.Error())
                    os.Exit(1)
  }
}

多谢各位

Golang有一流的函数,您可以将它们作为参数传递
您可能还想看看这个

Golang有一流的函数,您可以将它们作为参数传递
您可能还想看看这个

您所写的似乎是正确的

你写的似乎是正确的

你试过了吗?它起作用了吗?如果没有:编译器告诉了你什么?问题解决了。由于零指针取消引用,程序因运行时错误而终止。因此,我得出的结论是,传递函数是错误的,但在此之前,错误是非指针方法接收器中的赋值。对不起,浪费了你的时间原谅我:你试过了吗?它起作用了吗?如果没有:编译器告诉了你什么?问题解决了。由于零指针取消引用,程序因运行时错误而终止。因此,我得出的结论是,传递函数是错误的,但在此之前,错误是非指针方法接收器中的赋值。对不起,浪费了你的时间原谅我: