跳至正文

Golang--新的方向?

  • 2015-01-19

![go-11-is-released_gopherbiplane5](/2014/12/go-11-is-
released_gopherbiplane5.jpg)

很早就听说了Golang的大名,只是远观(当时觉得太难了= =)
刚到公司的时候,研究过一段时间的coreos—-大部分都是Golang写的,还是觉得语法很啰嗦……
几个月之前,老大就跟我谈过新系统可能用Golang来写,弥补我司只有Python这条技术线的弊端。
所以买了个app学Golang,但是没有开始上手做东西,只是跟着教程了解了一些特性,然后就荒废了。

由于最近开始研究Python性能提升的可能,异步库gevent,直接的epoll,非拷贝的meoryview各种黑科技都用上,但是并发10K
rps实在是没办法跨过的一道坎,索性,反正都是epoll/kevent,直接换Golang试试。

写了3天之后,我发现要接触一门新的语言,还是直接写小项目来得快,我之前看的教程在这个时候虽然有帮助,但是还是没有自己写过记忆来得深。
越写越爽,直接写了一个玩具级的多聊天室的聊天程序。
github.com/mengzhuo/go-chatroom

几点感触:

  • Golang真的是侧重于服务端编程的语言,大部分语言哪个语法层面支持协程?
  • 有静态语言的优点,又有动态语言的编译速度和灵活度(和Python比)
  • 没了显形的OOP,我竟然很喜欢,原来很讨厌的特性之一,但是接触时间长了,Golang才是KISS,减少了多重继承导致的不确定性
  • 动态语言经常会在函数内部更改实参,静态不允许这个,逻辑上出错的概率降低了
  • share memory by communication用得好的话,能最大程度简化竞态(当然渣的话,就悲剧了),不过有race detector(太方便了!)
  • err起初真的很讨厌,但是后来发现,这里面就是KISS,如果和JS、Python这样,从中间直接raise,那么处理异常的函数就会特别复杂……还不如果简单地在边上就处理了~
  • 随便就用一个环境变量GOMAXPROCS就解决了利用CPU多核的问题,我们Python程序员各种泪目啊

Golang语言是真的为我们服务端程序员量身定制的!

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据