1.包
1.1 导入包
Go语言以package语句开头,其后是包名,任何源代码都必须位于某个包内。名为main的包是一种特殊的包,其特殊之处在于其不可被导入。对main包的唯一要求是必须声明一个名为main的函数,该函数不接受任何参数,亦不返回任何值,是可执行程序的入口。
一个包可以由多个源文件组成,但一个源文件不能包含多个包。建议将构成一个包的多个源文件放在一个目录下,谓之包路径。在一个包的内部可以声明类型、常量、变量、函数和方法,其中首字母大写的标识符可以在声明它们的包的外部使用,称为导出标识符,或公有标识符。
一个包可以通过import语句导入其它包,被导入包中的公有标识符可以通过包名加"."来引用,如:fmt.Println("Hello World!")。Go语言以package语句开头,其后是包名,任何源代码都必须位于某个包内。名为main的包是一种特殊的包,其特殊之处在于其不可被导入。
对main包的唯一要求是必须声明一个名为main的函数,该函数不接受任何参数,亦不返回任何值,是可执行程序的入口。一个包可以由多个源文件组成,但一个源文件不能包含多个包。建议将构成一个包的多个源文件放在一个目录下,谓之包路径。
在一个包的内部可以声明类型、常量、变量、函数和方法,其中首字母大写的标识符可以在声明它们的包的外部使用,称为导出标识符,或公有标识符。一个包可以通过import语句导入其它包,被导入包中的公有标识符可以通过包名加"."来引用,如:fmt.Println("Hello World!")。
import语句用于导入其它包,其后是包路径:
- import "fmt"
- 标准库包:[Go语言安装目录]/src/fmt/
- import "github.com/golang/example/stringutil"
- 第三方包:[GOPATH]/src/github.com/golang/example/stringutil/
- import "C:/temperature"
- 绝对路径:C:/temperature/
- import "../temperature"
- 相对路径:../temperature/
// 导入包
// Go程序以package语句开头。main包是一种特殊的包,其特殊之处就在于不能被
// 导入。对main包的唯一要求是必须声明一个main函数,不接受任何参数也不返回
// 任何值。main包中的main函数是程序的入口点。通过import语句可导入其它包,
// 导入后即可使用其中被导出的标识符,包括常量、变量、函数、方法以及类型等
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
// 访问math包中的pi
// Pi是math包中被导出的常量标识符
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi) // 3.141592653589793
}
// 调用strings包中的函数
// ToLower是strings包中被导出的函数标识符
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.ToLower("STOP SHOUTING!")) // stop shouting!
}
1.2 包的用途
理解包的用途最有效的方法就是阅读有关包的文档。
Go语言的文档非常完善,而对于标准库的包,都有卓越的文档。
- 如果想阅读标准库的文康,可以启动本地文档服务器
- godoc -http=:8090
- 注:godoc和go doc命令在go1.13版本被移除了,需要手动安装。
- godoc -http=:8090
- 打开浏览器查看网址
- http://localhost:8090
Go语言的包名短小精悍而又含义丰富。当需要使用某种功能时,可通过查阅标准库包清单,找到相应的包,而后进一步查阅该包所导出的每一个标识符及其用法甚至示例。