go 的每一个文件都是属于一个包的,也就是说 go 是以包的形式来管理文件和目录结构的。
- 某个go文件属于某个包,在第一行使用:
package 包 名
。 - 导出某个变量或者函数。需要把变量名或函数名首字母大写。类似其它语言的 public。
- 引入包:
import "包的路径"
。这里包的路径是src下面的路径。默认编译器从GOPATH/src 下开始找import的包,所以一定要配置这个环境变量。(其实是先找$GOROOT,再找$GOPATH)
示例如下:在 src/hanShuDemo/utils/mathUtil.go 文件第一行是package utils 。下面通过"hanShuDemo/utils"就可以导入mathUtil.go的内容。
import (
"fmt"
"hanShuDemo/utils"
)
func main() {
var num1 int = 5
var num2 int = 8
fmt.Println(utils.Add(num1,num2))
fmt.Println("num1 = ",num1,"; num2 = ",num2)
}
- 在给一个文件打包时,该包对应一个文件夹,比如这里的 utils 文件夹对应的包名就是 utils, 文件的包名通常和文件所在的文件夹名一致,一般为小写字母。
- 如果包名较长,Go 支持给包取别名, 注意细节:取别名后,原来的包名就不能使用了。
如下:给utils包起了个别名ut,下面调用的时候就使用ut做报名调用。ut.Add(num1,num2)
。
import (
"fmt"
ut "hanShuDemo/utils"
)
func main() {
var num1 int = 5
var num2 int = 8
fmt.Println(ut.Add(num1,num2))
fmt.Println("num1 = ",num1,"; num2 = ",num2)
}
- 如果你要编译成一个可执行程序文件,就需要将这个包声明为 main , 即 package main 。这个就是一个语法规范,如果你是写一个库 ,包名可以自定义。
编译的时候先cd 到GOPATH环境变量所在的目录。然后运行命令:go build main函数所在文件夹的路径。例如上面main函数是在
src/hanShuDemo/utils文件夹下。那就运行:go build
hanShuDemo/utils