美文网首页
golang的回调和接口

golang的回调和接口

作者: heliping_peter | 来源:发表于2021-08-26 18:48 被阅读0次

最近写了个kafka的接收消息的功能,需要使用回调处理收到的消息。
一个是基本的回调,一个是使用接口功能实现回调,对接口是个很好的学习。
1.正常回调
kafka的接收消息处。收到消息后,使用传入的Onmessage进行处理。

type Onmessage func(string)  

func (kafka *KafkaClient) Consumer(topic string, onmessage Onmessage)  {
.......
onmessage(string(msg.Value))
}

调用kafka接收消息的单元,并在调用方写好回调

func CollectResult()  {
    kafkaclient := tools.KAFKA
    TOPICTASK := config.CONFIG.GetString("kafka.topicresult")
    kafkaclient.Consumer(TOPICTASK, Onmessage)
}

//收到消息的回调函数
func Onmessage(message string) {
    fmt.Println("Im callback", message)
}
  1. 上述是使用正常的回调,突然想到可以使用更常用的接口。
    先到kafka消息接收的单元定义接口
type MessageHandler interface {
    Onmessage(message string)
} 

//接收消息,并回传给回调函数
func (kafka *KafkaClient) Consumer(topic string, onm MessageHandler)  {
.......
//使用接口定义的方法
onm.Onmessage(string(msg.Value))
}

在调用方实现回调需要执行的方法

type MM struct{}

func (*MM) Onmessage(message string) {
    fmt.Println("Im callback", message)
}

func CollectResult()  {
......
      //传入实现了方法的结构体
    kafkaclient.Consumer(TOPICTASK, &MM{})
}

感觉还是使用基本回调相对简单点,接口就当学习了。
另外跨包的接口的方法要大写!定位了好久发现个入门的问题。

相关文章

  • golang的回调和接口

    最近写了个kafka的接收消息的功能,需要使用回调处理收到的消息。一个是基本的回调,一个是使用接口功能实现回调,对...

  • android中的广播机制回调和接口回调

    android中有很多需要数据交互的部分,交互的方式也有很多种不同,四大组件各有各的方法, 今天主要是谈谈关于回调...

  • 19年第34周:Go语言 有趣的接口

    一、Golang的接口 Go语言接口设计很符合设计原则参考图灵丛书中的《设计模式》 当我看到Golang的接口时,...

  • Go 学习笔记 11 | Golang 接口详解

    一、Golang 接口 Golang 中接口定义了对象的行为规范,只定义规范不实现。接口中定义的规范由具体的对象来...

  • golang分层测试之http接口测试入门

    前言 本节主要讲使用golang进行接口测试,其中主要以http协议的接口测试来讲 golang中的http请求 ...

  • 接口 interface golang

    原文链接:接口 interface-GOLANG

  • Golang的接口

    有意思的接口规则:自动实现 Golang也支持接口,但是它的接口规则很有意思: 一个类型不需要显示声明它要实现的接...

  • 回调和Promise

    一、什么是回调 程序里面的任务可以根据执行顺序不同分为同步任务和异步任务两种。 同步任务是指那些没有被引擎挂起的,...

  • Golang:接口

    什么是接口 在 Golang 中,一个接口是一组方法签名。当一个类型定义了接口里所有定义的方法时,就说这个类型实现...

  • Golang——接口

    接口(interface)定义一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。在go语言中,接...

网友评论

      本文标题:golang的回调和接口

      本文链接:https://www.haomeiwen.com/subject/qmoyiltx.html