Go语言入门

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

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 こんにちは 世界
$
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接 http://ironxu.com/581 本文是 How to Write Go Code 的学习笔记...
    好刚编程阅读 1,290评论 0 7
  • 本篇主要介绍go的生态。包括安装,ide,go命令三部分。随着作者的持续学习,内容可能会有所更新。 安装 截止到本...
    纳达丶无忌阅读 2,121评论 1 6
  • C++的代码的组织,依赖的管理规定几乎为零。学习golang的时候,一上来就是看语法,看代码,在代码组织和依赖管理...
    linjinhe阅读 568评论 0 0
  • 文件名、关键字与标识符 25 个关键字或保留字 36 个预定义标识符 Go 编译 每个 Go 应用程序都包含一个名...
    冰雪八哥阅读 312评论 0 0
  • 老爹是个无比勤劳的人,村里排第一名没什么问题。 很多年前老爹为了将来不种大果园的时候我们可以有苹果吃,从村里人手上...
    花手鞠阅读 324评论 2 2