[Go] 我又开坑了,学习 Golang。。。
最近一段时间在写一个代理工具,准备自己私用。担心某一天其它类似工具全部倒下的时候还可以有个备胎。
由于到目前为止尚未系统地学习一门脚本语言,所以一开始的语言加平台我竟然选择了在 Windows 平台,使用 C++ 语言开发基于完成端口的代理工具,天呐,一定是疯了。 写这种工具必须一开始就要考虑跨平台的问题,不然自己估计都得逼疯。毕竟在公司用 Windows,在家用 Mac,而且手机上也完全离不开。所以一时头热吧。
写这样一个工具是我跟一个网友在 TG 上交流并准备一起写的,虽然是我发起的项目,但是后来由于在语言、工具以及协议等一系列不一致的原因上,我俩独自开发了。 他使用的是 C++(Boost),相对于脚本语言来说比较麻烦,但至少还是跨平台。而我……前面已经说啦。
断断续续,下班后宅在家开发,大概一周后,我们两个人的版本都可以正常使用了。他的没有开源,我的暂时放在了 GitHub 上,后期可能会取消开源。
由于一开始我选择的语言及工具链就不是合适的,所以勉强可以正常使用后,就打算弃了。改用脚本语言重新实现,然而常用的脚本语言除了 lua 外,貌似我都不熟。
脚本语言如何选择?多数人可能会优先选择 Python,毫无疑问。但是,我实在是没有把 Python 学好,非常尴尬,学过几次,但是由于写得少,实在用得不熟。也可能是有点不喜欢的原因,自己也说不清。
而后我去了解了一下 Go 语言。Go 语言是 Google 公司在 2009 年推出的一款比较底层的语言。而 Python 呢,诞生于 90 年代,相对于 Go 语言来说,历史包袱绝对非常多。比如: Python2 和 Python3 的诸多不兼容。 而且 Go 语言天生对并发支持得很好,在后台服务器方面用得比较多,并且标准库也还是比较齐全。所以,我选择了 Go,而不是 Python,理由好简单,有木有!?哈哈哈哈,开玩笑了,Go 语言和 Python 我还是仔细对比了一下子的, 它们各自的优化、缺点、使用场景等。
我随手写了一个采用递归方式求斐波拉契数列的例子(n=45)。Go 语言和 C 语言耗时相差并不大,均在8秒左右。知道 Python 用了多久不?6分钟!!!我的天呐,不敢想像。后来得知,是因为 Python 没有递归优化的原因,哈哈哈哈。。。
今天就先写到这儿吧,准备先找几本书看看,看看官方的文档,然后做做练习,然后就开启 Go 语言之旅~~~
于 2017年11月5日 凌晨3点。