Go语言实战-1(package、main、import、init、_)
这个系列是我在看Go语言实战这本书总结出来的,方便忘记的时候查阅关键词,如果要系统的学习Go语言还是看这本书比较好。
main
每个可执行的go程序都有两个要素:
- 名称为main的函数,在构建可执行文件时,需要找到这个已经声明的main函数
func main(){
}
- 名称为main的包
package main
注意事项
- main函数要在main包里,否则构建工具无法生成可执行文件
import & package
- import即导入一段代码,让程序可以访问其中的标识符,即类型、函数、变量、接口等。
- package包定义一组编译过的代码,每段代码都描述包的一部分。
- 包的名字可以用来间接访问包内声明的标识符,从而把不同包但是相同名称的标识符区分开
- 所有处于同一文件夹里的代码文件,都必须使用同一个包名,并且按照惯例,包名和文件夹名同名。
- go编译器不允许声明导入某个包但是不使用
标准库
- Go语言的标准库包含了超过150多个具有常用功能的内置包,涵盖了网络、系统、加密、编码、图形等各个方面。
-
从标准库中导入代码时,只需要给出要导入的包名。编译器查找包的时候,会到GOROOT和GOPATH环境变量引用的位置去查找。Windows查看环境变量输入go env
标识符的公开
- 当代码导入一个包时,程序可以直接访问这个包中任意一个公开的标识符。这些公开的标识符需要以大写英文字母开头,以小写字母开头的标识符不能被其他包直接访问。
init
- 程序中每个代码文件里的init函数都会在main函数执行前调用
_
下划线标识符
- 导入包的时候使用。由于Go语言不允许导入某个包但是却不使用,因此下划线让编译器接受这类导入,并且调用包内所有代码文件里定义的init函数
import (
"log"
"os"
_ "github.com/goinaction/code/chapter2/sample/matchers"
"github.com/goinaction/code/chapter2/sample/search"
)
- 作为占位符使用,如果要调用的函数返回多个值,而又不需要其中的某个值,就可以使用下划线标识符将其忽略
for _, feed := range feeds{
...
}