go
调用,go
命令有一系列子命令。最简单的一个子命令就是run。这个命令编译一个或多个以.go结尾的源文件,链接库文件,并运行最终生成的可执行文件。(本书使用$表示命令行提示符。)go get gopl.io/ch1/helloworld
命令,就会从网上获取代码,并放到对应目录中。2.6和10.7节有这方面更详细的介绍。package
声明语句开始,这个例子里就是package main
, 表示该文件属于哪个包,紧跟着一系列导入(import)的包,之后是存储在这个文件里的程序语句。fmt
包,就含有格式化输出、接收输入的函数。Println
是其中一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。main
包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在main
里的main
函数 也很特殊,它是整个程序执行时的入口。main
函数所做的事情就是程序做的。当然了,main
函数一般调用其它包里的函数完成很多工作, 比如fmt.Println
。import
声明以及随后的package
声明扮演的角色。hello world例子只用到了一个包,大多数程序需要导入多个包。import
声明必须跟在文件的package
声明之后。随后,则是组成程序的函数、变量、常量、类型的声明语句(分别由关键字func
, var
, const
, type
定义)。这些内容的声明顺序并不重要。这个例子的程序已经尽可能短了,只声明了一个函数, 其中只调用了一个其他函数。为了节省篇幅,有些时候, 示例程序会省略package
和import
声明,但是,这些声明在源代码里有,并且必须得有才能编译。func
关键字、函数名、参数列表、返回值列表(这个例子里的main
函数参数列表和返回值都是空的)以及包含在大括号里的函数体组成。第五章进一步考察函数。{
必须和func
函数声明在同一行上, 且位于末尾,不能独占一行,而在表达式x + y
中,可在+
后换行,不能在+
前换行。gofmt
工具把代码格式化为标准格式,并且go
工具中的fmt
子命令会对指定包, 否则默认为当前目录, 中所有.go源文件应用gofmt
命令。本书中的所有代码都被gofmt过。你也应该养成格式化自己的代码的习惯。以法令方式规定标准的代码格式可以避免无尽的无意义的琐碎争执。更重要的是,这样可以做多种自动源码转换,如果放任Go语言代码格式,这些转换就不大可能了。gofmt
,这样你的源代码总会被恰当地格式化。还有个相关的工具,goimports
,可以根据代码需要, 自动地添加或删除import
声明。这个工具并没有包含在标准的分发包中,可以用下面的命令安装: