golang特性理解

Go语言是Google发布的开源编程语言,在高并发场景具有较好的表现。许多备受推崇的技术,诸如docker、Kubernetes、etcd都是使用go语言开发。以下是作者对go语言的几个特性的简单理解:

  • 自动垃圾回收:大家都知道C语言的性能较高,一方面是因为C语言比较底层,并且编译后运行。而另一方面是因为C语言没有自动垃圾回收机制,没有垃圾回收带来的损耗。这样的代价是程序员对内存使用上的极度谨慎,因为一不小心就可能导致内存泄漏。Go语言作为一门新生的开发语言,没有忽略内存管理这个问题,和Java一样都具有自动垃圾回收功能。
  • 丰富的内置类型:go具有丰富的内置类型,例如数组切片,类似Java里的ArrayList。在Java中ArrayList经常被使用,那么为什么不把这个类型作为内置类型呢,这样使用的时候就不需要import了,Go语言在这点上简化了我们的机械劳动。
  • 函数多返回值:诸如C语言、Java等其他一些高级语言是不支持多个函数返回值的,但是这个是一个很常用的需求。Java可以通过把多个返回值封装到一个对象或者通过map等类型来实现,但是还是太麻烦了。这种函数多返回值的设计很棒。
  • 错误处理:在Java等传统语言上都提供了错误处理功能。通常使用try{}catch()实现。Go语言则引入了三个关键字,分别是defer、panic和recover。其中使用defer关键字语句的含义是不管程序是否出现异常,均在函数退出时自动执行相关代码。和Java中的finally功能差不多,但是使用更加简便,只要一个关键字就能完成。
  • 匿名函数和闭包:这个功能在Java中也有,在使用的时候使得代码更加简洁。Go语言还能够把函数赋值给某个变量,这是一个比较有用的功能。这个功能在许多第三方库都得到了体现。举个例子,在cron表达式应用中,我们需要定时执行一系列操作,但是cron表达式的解析执行我们肯定不用自己造轮子,我们采用别人写的第三方库。在使用的时候,我们首先把自己的代码写成一个方法,然后把方法传给cron第三方库,这样就能定时实现我们自己的代码逻辑