Go程序设计语言笔记
Hello, world
helloword.go
package main
import "fmt"
func main(){
fmt.Println("Hello, world")
}
Go是编译型的语言。Go的工具链将程序的源文件转变成机器相关的原生二进制指令。
这些工具可以通过单一的go命令配合其子命令进行使用。
- go run:将一个或多个以
.go
为后缀的源文件进行编译、链接,然后运行生成的可执行文件。 - go build:将
.go
文件生成二进制程序,可以直接执行。
具体效果如下图所示:
Go代码是使用包来组织的。包类似于其他语言中的库和模块。一个包由一个或多个.go
源文件组成,放在一个文件夹中,该文件夹的名字描述了包的作用。每一个源文件的开始都用package声明,指明了这个文件属于哪个包。后面跟着它导入的其他包的列表(import
),然后是存储在文件中的程序声明。
Go的包有些类似于Python的模块,package有些类似于init,所有的文件都在一个文件夹里。
Go的标准库中有100多个包来完成输入、输出、排序、文本处理等常规任务。例如,fmt
包中的函数用来格式化输出和扫描输入。Println
是fmt
中一个基本的输出函数,它输出一个或多个用空格分隔的值,结尾使用一个换行符,这样看起来这些值是单行输出(类似于Python
的print
)。
名为main
的包比较特殊,它用来定义一个独立的执行程序,而不是库。在main
包中,函数main
也是特殊的,不管在什么程序中,main
做什么事情,它总是程序开始执行的地方。当然,main
通常调用其他包的函数来做更多的事情,比如fmt.Println
。
我们需要告诉编译器源文件需要哪些包,用package
声明后面的import
来导入这些包。
import
导入声明后面,是组成程序的函数、变量、常量、类型(以func、var、const、type
开头)声明。大部分情况下,声明的顺序是没有关系的。
一个函数的声明由func
关键字、函数名、参数列表(main
函数为空)、返回值列表(可以为空)、放在大括号内的函数体组成,函数体定义函数是用来做什么的,这将在第5章详细介绍。
Go不需要再语句或声明后面使用分号结尾,这点和Python
一样。另外,需要注意的是,{
符号必须和关键字func
在同一行,不能独自成行。
Go对于代码的格式化要求非常严格。gofmt
工具将代码以标准格式重写,go工具的fmt
子命令使用gofmt
工具来格式化指定包里的所有文件或者当前文件夹中的文件。