Go语言包函数可访问性

Go语言包函数可访问性教程

Golang 中的一个 中如果定义了 函数,该函数的首字母如果小写,那么在其他包中将无法使用该函数。如果定义的函数首字母大写,那么可以在另一个包中访问。

Golang包函数可访问性

package package1 func func1(){ }

我们在包 package1 中定义了一个函数 func1,因为其首字母是小写的,因此,该函数只能在包 package1 中使用,在其他包不能访问。

package package1 func Func1(){ }

我们在包 package1 中定义了一个函数 Func1,因为其首字母是大写的,因此,该函数可以在其他包中使用。

案例

函数可访问性

首先,我们在设置的 GOPATH 环境变量对应的路径下的 src 目录下新建一个 haicoder 文件夹,并在 haicoder 文件夹新建一个 info.go 文件,如下图所示:

21_golang包函数可访问性.png

我们在 info.go 文件里面输入如下内容:

package haicoder import "fmt" func info(){ fmt.Println("HaiCoder info") }

首先,我们使用 package 关键字定义了该文件所在的包的名字为 haicoder,接着,在该包里面,定义了一个首字母小写的函数 info。函数 info 直接使用 print 输出一句话。

接着,我们在 GOPATH 路径下新建一个 haicoder.go 文件,在文件中,输入以下内容:

package main //函数可访问性 import ( "fmt" "haicoder" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") haicoder.info() }

即,我们定义了该包的包名为 main 包,同时,我们在 main 包里面同时引入了 fmt 包和 haicoder 包,最后,我们在 main 函数里面,使用 haicoder 包里面的 info 函数。程序运行后,控制台输出如下:

22_golang包函数可访问性.png

我们看到,程序运行报错,因为,我们在 haicoder 包定义的函数名首字母是小写的,而首字母小写的函数只能在本包使用。所以,在 main 包不能使用 package1 包里面的函数 info。接着,我们修改 info.go 文件,如下:

package haicoder import "fmt" func Info(){ fmt.Println("HaiCoder info") }

即,将首字母小写的函数 info 修改为了首字母大写的 Info,同时,修改 haicoder.go 文件如下:

package main //函数可访问性 import ( "fmt" "haicoder" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") haicoder.Info() }

此时,再次运行程序,输出如下:

23_golang包函数可访问性.png

我们看到,这次程序没有报错,即我们在 main 包里面成功调用了 haicoder 包里面的首字母大写的函数。

Go语言包函数可访问性教程总结

在 Golang 中的一个包中如果定义了函数,该函数的首字母如果小写,那么在其他包中将无法使用该函数。如果定义的函数首字母大写,那么可以在另一个包中访问。