go语言是一门全新的静态类型开发语言,选择以开源方式发布,与当前的开发语言相比具有许多的新特性。首先先介绍一下go语言最主要的特性:
- 自动垃圾回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
首先我们先来看看自动垃圾回收,学过c语言或者是c++的应该都知道,当我们手动malloc或者new一块内存的时候,用完这块内存必须要free()或者是delete[],但如果由于程序员的失误而忘记了释放自己动态开辟的内存,就会引发我们所谓的内存泄露的问题。假设该函数被调用的非常频繁,那么这个进程所占用的内存资源会持续增长,直到占用完所有系统内存,这个时候系统也很自然会崩溃。
手动管理内存还给我们带来另外一个很严重的问题,由于指针的随意指向而让程序员不知道何时才去释放自己手动开辟出来的这块内存,如果程序员释放掉了某块内存,而在别的地方还在用这块内存的话,就会出现我们所谓的“野指针”或者叫做“悬空指针”。对这些指针若进行读写操作,那么程序也会报错。
到目前为止,自动垃圾回收算法(Garbage Collection 简称GC)是解决内存泄漏的最佳解决方案。所谓垃圾回收,即所有的内存分配动作都会被在运行时记录,同时任何对该内存的使用也会被记录,然后垃圾回收器会对所有已经分配的内存进行跟踪监测,一旦发现有些内存已经不会被任何人使用,就阶段性的回收这些没人用的内存。
而在go语言中,我们就不用担心因为自己忘记操作去释放某块内存而导致的内存泄露了,系统会自动帮我们去检测和回收,这样的话就会方便很多。
go语言还有更多丰富的内置类型,如map容器、数组切片等。go语言中数组切片的功能与c++中vector容器的功能非常相似。
我们都知道c语言和c++,return的时候只能带出来一个值,这样如果我们需要一个函数中的多个值的话用return就非常的不方便,而go语言一个函数可以带出来多个返回值,这就给程序员需要多返回值的时候带来了极大的方便。
go语言引入了三个关键字用于标准的错误处理流程,分别是defer、panic和recover。从总体上来说,go语言的错误处理机制和c++、Java里面的异常捕获机制相比,代码量大量减少,这样就让程序员不用为了考虑安全性而去增加大量代码。
对于go语言中的匿名函数和闭包,我会在后面的博客中仔细的介绍,在这里就先不多说了。
go语言中的类型定义非常接近c语言中的结构(struct),甚至沿用了其关键字struct。更详细的内容在后买你的博客中也会介绍到,今天在这里只是简单了解一下go语言。
go语言引入了goroutine的概念,它使得并发编程变得特别简单。
反射是在Java语言出现后迅速流行起来的一种概念,通过反射可以获取对象类型的详细信息,并可动态操作对象。
最后一个语言的交互性也是在后面仔细介绍。
对于go语言的简单介绍今天就到这里了。