在 Golang 中一个 包 想要引用另一个包的标志符,比如:变量、结构体、常量、函数 等,那么这些标志符必须在本包里面是导出的。
Go 语言中,标志符的导出,只需要将其首字母大写即可,所有首字母大小的标志符都是导出的标志符,都可以在另一个包中引用。
在包中,未导出的标志符,首字母都是小写的,这些标志符在本包可以自由的使用,在其他包不可以使用。
首先,我们在设置的 GOPATH 环境变量对应的路径下的 src 目录下新建一个 haicoder
文件夹,并在 haicoder 文件夹新建一个 info.go
文件,如下图所示:
我们在 info.go
文件里面输入如下内容:
package haicoder
const Version = "1.0"
const releaseVersion = "0.9"
首先,我们使用 package
关键字定义了该文件所在的包的名字为 haicoder
,接着,在该包里面,定义了两个 string 类型的 变量 一个是首字母大写的 “Version”,一个是首字母小写的 “releaseVersion”。
接着,我们在 GOPATH
路径下新建一个 haicoder.go
文件,在文件中,输入以下内容:
package main
//导出包变量
import (
"fmt"
"haicoder"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
version := haicoder.Version
fmt.Println("Version =", version)
}
即,我们定义了该包的包名为 main 包,同时,我们在 main 包里面同时引入了 fmt 包和 haicoder 包,最后,我们在 main 函数里面,使用 haicoder 包里面的 Version 变量。程序运行后,控制台输出如下:
我们看到,程序运行之后,输出了我们在 haicoder
包里面的 Version 变量。即,我们在 main 包里面成功调用了 haicoder 包里面的变量。接着,我们修改程序源码如下:
package main
//导出包变量
import (
"fmt"
"haicoder"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
version := haicoder.releaseVersion
fmt.Println("Version =", version)
}
我们调用了 haicoder
包里面的 releaseVersion 变量,程序运行后,控制台输出如下:
我们看到,程序报错,因为,首字母小写的变量不是包导出变量,只能在本包使用,在别的包不可以使用。
Golang 中的 包 的引用有四种引用格式,分别为:使用标准引用方式引入、使用别名引用方式引入、使用省略方式引入和仅执行包 init 函数方式引入。