摘要
这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天。
本文主要介绍Go语言的一些基础知识,首先是一个.go文件的基本组织结构;其次介绍一下变量的使用方法;
Go文件的基本组织结构
通过以下的代码来分析一个.go文件的基本结构
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
首先便是package,表示当前代码所属的包(类似于其它语言的库或者模块),一个包由位于单个目录下的一个或多个.go源代码文件组成,目录定义包的作用。每个源文件都以一条package声明语句开始。上述的代码便属于main包。
💡 main包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在main里的main函数也很特殊,它是整个程序执行时的入口。
之后的import告诉编译器源文件需要哪些包。上面的代码中hello world例子只用到了一个包,大多数程序需要导入多个包。并且,import声明必须跟在文件的package声明之后。
💡 必须恰当导入需要的包,缺少了必要的包或者导入了不需要的包,程序都无法编译通过。这项严格要求避免了程序开发过程中引入未使用的包(译注:Go语言编译过程没有警告信息,争议特性之一)。
随后,则是组成程序的函数、变量、常量、类型的声明语句(分别由关键字func、var、const、type定义)。这些内容的声明顺序并不重要。
变量
变量的基本结构为:
var 变量名字 类型 = 表达式
其中“类型”和“表达式”两部分可以省略其中一个。如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型信息。如果初始化表达式被省略,那么将用零值初始化该变量。
变量还有一种简短的声明方式:
**名字 := 表达式**
因为简洁和灵活的特点,简短变量声明被广泛用于大部分的局部变量的声明和初始化。var形式的声明语句往往是用于需要显式指定变量类型的地方,或者因为变量稍后会被重新赋值而初始值无关紧要的地方。
这里有一个比较微妙的地方:简短变量声明左边的变量可能并不是全部都是刚刚声明的。如果有一些已经在相同的词法域声明过了(§2.7),那么简短变量声明语句对这些已经声明过的变量就只有赋值行为了。