本文主要是介绍Go游戏服务器开发的一些思考(三十九):go reflect的正确使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
错误的使用
go reflect包,在写一些通用库、通用模块时,提供了不少便利。
但是需要注意,go reflect包是非常慢的!
下图,就是一次失败使用go reflect包的尝试:
(CStructGO 是 本人使用go reflect包写的一个C-Style Struct协议库:cstruct-go)
可以看到,同样的功能,cstruct-go比protobuf慢了一个数量级。
于是,看了一下protobuf go的源代码。
发现,protobuf也使用了go reflect包,也是通过go reflect包来分别处理各种类型。
那么问题出在哪里呢?
protobuf go介绍
protobuf go分开2部分:
工具部分
根据工具,把proto定义文件,自动生成Get、Set等系列方便使用者使用的辅助函数
序列化、反序列化通用模块
protobuf核心代码&#
这篇关于Go游戏服务器开发的一些思考(三十九):go reflect的正确使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!