Go 1.8使用Protocol Buffer

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 1.8使用Protocol Buffer相关的知识,希望对你有一定的参考价值。

参考技术A 最近在写一个在线客服模块,秉着简单,可控,可维护,可扩展,满足需求的原则,找了一个开源项目: https://github.com/kone-net/go-chat 。

当然对于原始项目,肯定还是需要一些改动的,比如:鉴权,用户体系,文件类型消息的处理(存在阿里云OSS上)等等。

为了满足需求,修改了原始的基于protocol buffer的message,修改后在重新生成对应的go文件时候,遇到了一些问题,可以参考以下解决方法。

github上的protobuf( https://github.com/golang/protobuf )已经说明,需要使用: google.golang.org/protobuf 。

安装官方文档 https://grpc.io/docs/languages/go/quickstart/ 安装对应的插件模块,mac需要在.zshrc文件添加以下内容:

以下是message proto文件:

执行以下命令生产对应的go文件:

buffer_pool.go

package nsqd

import (
    "bytes"
    "sync"
)

var bp sync.Pool

func init() {
    bp.New = func() interface{} {
        return &bytes.Buffer{}
    }
}

func bufferPoolGet() *bytes.Buffer {
    return bp.Get().(*bytes.Buffer)
}

func bufferPoolPut(b *bytes.Buffer) {
    bp.Put(b)
}

以上是关于Go 1.8使用Protocol Buffer的主要内容,如果未能解决你的问题,请参考以下文章

protocol_v2.go

nsqlookup_protocol_v1.go

1.8 万字详解 Go 是如何设计 Map 的

go微服务Protocol Buffers V3中文语法指南

go微服务Protocol Buffers V3中文语法指南

go微服务Protocol Buffers V3中文语法指南