go语言 包(package)详解
go语言的包(package)是多个Go源码的集合,go语言有很多内置包,比如fmt,os,io等。我们也可以自定义包。
在一个go语言程序中使用其它包的对象或者函数时,首先要通过 import 引入它。
1. 引入包的路径
第一种方式相对路径:
import "./module" // 引入的包在当前文件同一目录的 module 目录,不建议使用此方式。
第二种方式绝对路径:
import “LearnGo/init” // 引入的包在 gopath/src/LearnGo/init 目录。
2. 引入包的特殊方式
下面展示一些特殊的 import 方式。
1) 点操作
我们有时候会看到如下的方式导入包
import . “fmt”
这个点操作的含义就是这个包导入之后,在调用这个包的函数时,可以省略前缀的包名。
例如:fmt.Println("hello world") 可以省略的写成 Println("hello world")。
2) 别名操作
别名操作就是可以把包命名成另一个容易记忆的名字。
import f "fmt"
别名操作的话调用包函数时前缀变成了我们的前缀,即 f.Println("hello world")。
3) _操作
_操作是一个让很多人费解的操作符,例如:
import _ "github.com/go-sql-driver/mysql"
_操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的 init 函数。
Go 源码文件 go/src/runtime/sema.go 实现了信号量 Semaphore,提供了 sleep 和 wakeup 同步原语。Go 内部使用信号量 Semaphore 来控制 ...