Go语言中的自定义包(附带实例)
包是 Go 语言中代码组成和代码编译的主要方式。本节主要介绍如何自定义包,以及如何使用自定义包。
到目前为止,读者看到的实例都是以一个包的形式存在的,如 main 包。在 Go 语言中,允许将同一个包的代码分隔成多个独立的源码文件,并单独保存,只要将这些文件放在同一个目录下即可。
自定义包要放在 GOPATH 的 src 目录下(也可以是 src 目录下的某个子目录),而且两个不同的包不能放在同一目录下,以免引起编译错误。
一个包中可以有任意多个文件,文件名也没有任何规定(但后缀名必须是 .go),这里假设包名就是 .go 的文件名,如果一个包有多个 .go 文件,则其中有一个 .go 文件的文件名要和包名相同。
下面通过示例演示如何创建名为 demo 的自定义包,并在 main 包中使用自定义包 demo 中的方法。
1) 首先,在 GOPATH 下的 src 目录中新建 demo 文件夹,并在 demo 文件夹下创建 demo.go 文件,代码如下:
2) 然后,在 GOPATH 下的 src 目录中新建 main 文件夹,并在 main 文件夹下创建 main.go 文件,代码如下:
引用自定义包要注意以下几点:
到目前为止,读者看到的实例都是以一个包的形式存在的,如 main 包。在 Go 语言中,允许将同一个包的代码分隔成多个独立的源码文件,并单独保存,只要将这些文件放在同一个目录下即可。
自定义包要放在 GOPATH 的 src 目录下(也可以是 src 目录下的某个子目录),而且两个不同的包不能放在同一目录下,以免引起编译错误。
一个包中可以有任意多个文件,文件名也没有任何规定(但后缀名必须是 .go),这里假设包名就是 .go 的文件名,如果一个包有多个 .go 文件,则其中有一个 .go 文件的文件名要和包名相同。
下面通过示例演示如何创建名为 demo 的自定义包,并在 main 包中使用自定义包 demo 中的方法。
1) 首先,在 GOPATH 下的 src 目录中新建 demo 文件夹,并在 demo 文件夹下创建 demo.go 文件,代码如下:
package demo import ( "fmt" ) func PrintStr() { fmt.Println("hello, go") }
2) 然后,在 GOPATH 下的 src 目录中新建 main 文件夹,并在 main 文件夹下创建 main.go 文件,代码如下:
package main import ( "demo" ) func main() { demo.PrintStr() }运行结果如下:
go run main.go
hello, go
引用自定义包要注意以下几点:
- 如果项目的目录不在 GOPATH 环境变量中,则要把项目移动到 GOPATH 所在的目录中,或在 GOPATH 环境变量中设置项目所在的目录,否则无法完成编译;
- 当使用 import 语句导入包时,使用的是包所属目录的名称;
- 包中的函数名第一个字母要大写,否则无法在外部调用;
- 自定义包的包名不必与其所在目录的名称一样,但为了便于维护,建议保持一致;
- 调用自定义包时使用“包名.函数名”的方式,如上例:demo.PrintStr()。