Go语言入门

2015-11-14  本文已影响200人  老魏

仅为方便查看,搬运一下,也可看原文

1. 简介

本文是关于Go编程语言的基础教程,主要面向有C/C++基础的读者。它并不是一个语言的完整指南,关于 Go的具体细节请参考 语言规范 一文。在读完这个入门教程后, 深入的华可以继续看 Effective Go ,这个文档 将涉及到Go语言的更多特性。此外,还有一个《Go语言三日教程》系列讲座。

下面将通过一些小程序来演示go语言的一些关键特性。所有的演示程序都是可以运行的,程序的代码在安装目录的 /doc/progs/ 子目录中。

文中的代码都会标出在源代码文件中对应的行号。同时为了清晰起见,我们忽略了源代码文件空白行的行号。

2. Hello,世界

让我们从经典的"Hello, World"程序开始:

05    package main
07    import fmt "fmt"  // Package implementing formatted I/O.
09    func main() {
10        fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n")
11    }

每个Go源文件开头都有一个package声明语句,指明源文件所在的包。同时,我们也可以根据具体的需要 来选择导入(import语句)特定功能的包。在这个例子中,我们通过导入fmt包来使用我们熟悉的printf函数。 不过在Go语言中,Printf函数的是大写字母开头,并且以fmt包名作为前缀:fmt.Printf

关键字func用于定义函数。在所有初始化完成后,程序从main包中的main函数开始执行。

常量字符串可以包含Unicode字符,采用UTF-8编码。实际上,所有的Go语言源文件都采用UTF-8编码。

代码注释的方式和C++类似:

      /* ... */
      // ...

稍后,我们还有很多的关于打印的话题。

3. 分号(Semicolons)

比较细心的读者可能发现前面的代码中基本没有出现分号;。其实在go语言中,只有在分隔 for循环的初始化语句时才经常用到;但是代码段末尾的分号一般都是省略的。

当然,你也可以像C或JAVA中那样使用分号。不过在大多数情况下,一个完整语句末尾的分号 都是有go编译器自动添加的——用户不需要输入每个分号。

关于分号的详细描述,可以查看Go语言说明文档。不过在实际写代码时,只需要记得一行末尾的分号 可以省略就可以了(对于一行写多个语句的,可以用分号隔开)。还有一个额外的好处是:在退出 大括号包围的子区域时,分号也是可以省略的。

在一些特殊情况下,甚至可以写出没有任何分号的代码。不过有一个重要的地方:对于if等 后面有大括弧的语句,需要将左大括弧放在if语句的同一行,如果不这样的话可能出现编译错误。 Go语言强制使用将开始大括弧放在同一行末尾的编码风格。

4. 编译

Go是一个编译型的语言。目前有两种编译器,其中Gccgo采用GCC作为编译后端。另外还有 根据处理器架构命名的编译器:针对64位x86结构为6g,针对32位x86结构的为8g等等。 这些go专用的编译器编译很快,但是产生的目标代码效率比gccgo稍差一点。目前(2009年底), go专用的编译器的运行时系统比gccgo要相对健壮一点。

下面看看如何编译并运行程序。先是用针对64位x86结构处理器的6g

$ 6g helloworld.go  # 编译; 输出 helloworld.6
$ 6l helloworld.6   # 链接; 输出 6.out
$ 6.out
Hello, world; or Καλημέρα κόσμε; or こんにちは 世界
$

如果是用gccgo编译,方法和传统的gcc编译方法类似:

$ gccgo helloworld.go
$ a.out
Hello, world; or Καλημέρα κόσμε; or こんにちは 世界
$
上一篇下一篇

猜你喜欢

热点阅读