小组Go

使用golang有小半年了,并没有什么大作,看书加实践,算是入了个门。以前有c++基础,来公司写了几个月python,一开始转向go还真有点别扭。已经习惯了python这样十分自然,友好的语言,对go这种带点c,c++气质的语言还真花了些时间来适应。

首先的感觉就是,go语言作者一定是处女座,或者强迫症,可以做到代码风格的完美统一。在go的工具链中可使用gofmt,自动格式化代码,一劳永逸解决了各种代码风格众口难调的问题。其次是对go的错误处理机制极为不爽,让我满篇的代码里充满类似这样的无聊表达:

后来理解到这是golang的设计哲学的一部分,即将error当作value来处理(Error handling and Go)。以前在python中,为了防止某块代码产生异常,常用的方式是使用try…except. 这样做倒是方便,可是当出现异常时无法精确捕捉具体产生异常的代码段,而golang中的error则检查每一处可能出错的表达,并输出该错误的具体表达形式。

go语言的作者设计力求简洁,在go语言中只有25个关键字,但其表达能力却很强大,支持继承,重载,对象。

开始最头疼的是解析json字符串。在python里是件很轻松的事:

然后便可肆意使用content里面的数据。在go里面却异常费劲。此时要派上go语言里面的神器:interface跟reflect,即接口和反射。空interface{}可接收任意数值类型,通过运行时reflect反射出具体类型,即可将interface{}中的数据如庖丁解牛般一一解析而出。这里举个栗子

2 收藏


直接登录