西西河

主题:【原创】介绍一下Go语言(1)之前的话 -- zllwy

共:💬92 🌺231
全看分页树展 · 主题 跟帖
家园 【原创】介绍一下Go语言(5)其他特性

Go的一个设计目标是在尽量简单的基础上,提供一组正交(orthogonal)的语言特性。使得这些语言特性的应用也比较简单明了。我对Go的感觉就是一套趁手好用的工具,每件工具都有自己独立的功能,都设计得比较精巧,而它们又可以通过简单的结合来提供强大的综合功能。这里把我喜欢的一些语言特性罗列一下:

1 函数的多返回值。一个函数可以返回多个值。类似于python可以返回一个tuple。这个特性太方便了。所以我把它排在第一位。:-)当然由于这个特性,Go的call convention和C不一样。Go的compiler(非gccgo)不能和C的call convention兼容,在和C进行连接的时候要通过特殊的步骤(cgo)。目前Go可以调用C的函数(通过SWIG可以调用C++)。但反过来还不行。

2 Array slice。也和python类似的功能一样,可以用来访问一个array的不同区段。

3 强大的for和switch。Go里面没有了while和do。for可以表达任何循环。和range结合起来基本起到了可以iterate各种type的作用。switch实际上起到连串else if的作用。

4 内置map。这个很多dynamic language都有,不过static language的还不多见。也算是抄python吧。

5 closure。这个不用说了吧。

6 defer。有点像Java的finally。不过可以写在函数任何地方。感觉红来保证资源的释放比finally更方便。

7 garbage collection。这个也列在这里吧。

8 程序本身的UTF-8支持。

9 panic/recover用来处理runtime exception。类似于exception。感觉Java里面exception有点被滥用了。exception应该只用来处理罕见的错误,而不应该用来控制流程。我觉得多返回值很大程度上已经使得错误处理方便很多了。

10 变量定义的短形式。你可以写

a := 1

自动就把a定义为int了。可以少些很多废话。

11 变量类型定义。终于把C/C++的变态格式改过来了。类型的表达式放在了变量名的后面,初始化放在最后。清楚,简单。

12 简单的变参定义。又抄了python。

其他还有很多小的特性。感觉用Go写程序比较轻松简单。我想跟C接近,又消除了C的很多不足,是最大的原因吧。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河