前言


为什么要学习一门新语言?

很简单,如果你是一名称职的程序员,想提高自己的编程水平,就去学习新的语言。学习新语言并不代表你要在项目中使用它,而是用来扩宽眼界,延展思路,增加底蕴。

从别人的话里改一句

Coding for fun!

Go语言的特点


以下节选自Go语言编程并总结。

Go语言官方自称,之所以开发Go语言,是因为“近10年来开发程序之难让我们有点沮丧”。这一定位暗示了Go语言希望取代C和Java的地位,成为最流行的通用开发语言。
Go希望成为互联网时代的C语言。多数系统级语言(包括Java和C#)的根本编程哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为C++ 真的没啥好学的,值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也要 足够简单!
那么,互联网时代的C语言需要考虑哪些关键问题呢?

  1. 首先,并行与分布式支持。多核化和集群化是互联网时代的典型特征。作为一个互联网时代的C语言,必须要让这门语言操作多核计算机与计算机集群如同操作单机一样容易。
  2. 其次,软件工程支持。工程规模不断扩大是产业发展的必然趋势。单机时代语言可以只关心问题本身的解决,而互联网时代的C语言还需要考虑软件品质保障和团队协作相关的话题。
  3. 最后,编程哲学的重塑。计算机软件经历了数十年的发展,形成了面向对象等多种学术流派。什么才是最佳的编程实践?作为互联网时代的C语言,需要回答这个问题。

Go语言用下面的9个特性来解决上面的3个问题,最主要的特性:

  1. 自动垃圾回收,和Java、C#类似。
  2. 更丰富的内置类型,新增了map(字典)和Slice(数组切片,类似动态数组)。
  3. 函数多返回值。
  4. 错误处理,defer、panic和recover。
  5. 匿名函数和闭包。
  6. 类型和接口,不支持继承和重载,而只是支持了最基本的类型组合功能。
  7. 并发编程,goroutine协程,CSP(通信顺序进程,Communicating Sequential Process)。
  8. 反射。
  9. 语言交互性,可以按Cgo的特定语法混合编写C语言代码。

安装


目前各个版本的Linux最新版应该都可以使用apt或yum等包管理工具进行go的安装。如果需要官网安装,可以参考链接

第一个Go程序


1
2
3
4
5
6
package main
import "fmt"// 我们需要使用fmt包中的Println()函数

func main() {
fmt.Println("Hello, world. 你好,世界!")
}

保存文件为hello.go,,进入到该源程序的文件夹,运行

1
go run hello.go

得到输出Hello, world. 你好,世界!

编译和执行


从上面第一个go程序可以看到,使用go run命令可以执行执行go源程序,实际上这个过程中包括了编译、链接、执行三个步骤,并且在这个三个步骤中不生成其他文件。

使用命令go build可以构建出目标程序,既可执行代码。

1
2
3
4
5
$ go build HelloGo.go
$ ls
HelloGo HelloGo.go
$ ./HelloGo
Hello, world. 你好,世界!

很漂亮,不是吗?不需要config文件。

参考链接


1.Go语言编程
2.Go编程语言