我已经在Go for OSX中编写了一个小型引擎(将OpenGl用于图形窗口)。我对C ++游戏引擎(http://morganjeff.weebly.com/)有一些经验,因此在阅读了它提供的一些功能后决定尝试Go。
从Go 1.1发行版开始,go支持我编写游戏引擎所需的大多数功能(实际上是游戏核心,因为引擎会建议编辑者,而其他则不行)包括:
- 成员函数绑定(用于消息传递系统)
- 反射是内置的(用于序列化,外部工具支持等)
- 接口(用于实现系统,组件等的多态行为)
使用Go(对于大型项目)的一些好处:
- 语言内置了测试功能(包括基准测试和一些断言)
- 例子很容易添加到语言中(为了正确起见,对它们进行了编译)
- 易于添加特定于体系结构的代码(通过文件命名约定)
- 语言内置了分析功能
- 导入的内置版本控制(允许将大型二进制文件添加到与源不同的存储库中,同时保持版本控制和最新状态)
通常使用Go的一些好处:
- 易于重构的代码
- Go支持线程(与将其分层的C ++不同)
- 超快的编译速度减少了对脚本语言支持的需求
- 静态输入系统(通过隐式地通过鸭子输入来满足接口)
- 多个返回值,命名参数,带标签的结构属性
- 出色的内置工具和文档
- 托管语言
使用Go的一些缺点:
- 没有宏或模板
- 没有更成熟语言的库支持
- 托管语言(故意列出两次)
- 没有IDE
有很多方法可以获取原始内存(导入“不安全”),我将链接一篇文章,展示如何配置go程序的内存和速度。总而言之,Go声称它是现代C语言似乎很真实。我认为它是“智能”设计的(比我提到的原因要多得多),而且更重要的是,它有据可查。使用Go设计的引擎与使用C ++设计的引擎(我仍然会习惯)有所不同,但是Go引擎解决了许多在C ++中并未真正解决的问题(即并行性, C ++语言的复杂性以及对继承的滥用)。
这是我答应过的文章:http :
//blog.golang.org/2011/06/profiling-go-programs.html
杰夫