- Published on
Golang
近三周一直在用 golang 语言开发游戏后台。选择 golang 也是咨询了做游戏后台的同事,说是性能好。当时的选型是 nodejs,但考虑自己并没有游戏后台开发经验,当时想寻一个游戏框架,在上面开发自己的业务逻辑,想必比从零开始要靠谱,奈何找到的那款网易开发的后台框架已经有大半年没人提交代码了,给其中一个 commiter 发了邮件也没有回复。顿时不敢入坑。
选 golang 做开发也是机缘巧合,刚好发现有个做游戏的后端使用了 beego 框架,而这个框架用了 golang 开发。去到 http://beego.me 才知道原来这个框架有这么多知名厂商在使用。随即决定入坑。
用了一个周末看了一遍 golang 的语法和基础,就开始入坑了。
作为已经有 10 年写代码经验的人,上手一门新语言,其实问题可能主要就是语法熟练程度上而已。不过对于初步写东西其实真的一个周末就够了。
不过对于 Redis MySQL 等一些 package 的使用,还得是一点点查,毕竟之前 Redis 的读写我都没经验搞过。
相比 C/C++ 写 go 是轻松了太多,标准 package 里几乎涵盖了你需要的所有,和 python 类似。和另一个同事就这么边学边查,一点点把代码搞了出来。
中间遇到过几次问题,一个是 go 里面不支持泛型编程,导致当时同事写了 N 份,不同 struct 的 getter 和 setter,这个东西我在看 golang 的基础教程的时候,记得见到过变参部分用了 interface 实现。就花了点时间搞了下,结果出奇的好使,这样只需要搞一个 getter 和 setter 变的部分用 arguments 去适应就 OK 了,大大减少了代码编写。
还有一个很神的东西,就是匿名内嵌 struct 达到的继承。早期写的代码写了大量 struct 都有重复字段,由于没有利用这个特性搞的代码徒然增加了好多。
由于工期问题,和人员变动问题,其实搞的后面真的很少有时间好好学习下 golang 的细节,前同事留下的一堆堆的代码里的大大小小 bug,需要一个个改好,又有新的接口需要开发。好在新入职了一个同事,帮我分担了具体功能开发上的一些工作。让我有一点精力去研究一些技术细节,改进和改善现在的代码编写方式,尽快变成一个 goer 而不是 C/C++-Goer。
昨天看到的一篇文章 https://levy.at/blog/11 讲了 golang 里的一些 坑。从中级到高级,包括 goroutine 里的资源泄漏。发现其实 golang 也是坑不少,只是相对 C/C++ 而言少太多了。但也不能说,转用 golang 开发就可以随意搞,无后顾之忧了。
顺着这篇翻译并转载的文章,找到了文章原文,又顺着找到了作者的 linkedin 发现还真是一个厉害的人。而且貌似还没有上过大学,就是从 黑客 开始搞起。
进而想到了国内接触过的做技术的人,多半都是养家糊口型的,真正钻进去的不多,对于新事物勇敢拥抱的不多。如果真的想走的远,或者俗一点成为一个独立开发者、自由职业者,过硬的技术是基础,还有很重要的就是激情,热情。
我个人也是多么想和这样有激情、热情的人一起共事呀,有些时候遇不到,只能自己先朝着高标准严要求去努力。
想到一句话:自律给我自由
有些时候,看到那些写的垃圾的代码真是忍不住,就觉得 shit ! 说的多了,其实自己都烦了。但是又没办法,有时候招到合适的人也确实是一个很大的问题。
聊着聊着又感慨起来了。是呀,上次的文章已经是好久的事情了。我还得是慢慢找回自己的节奏。即使没整片时间也得写几句,否则时间都流失后,这里还是一片空白。
写东西很有好处,有助于思考,有助于表达。