自己编写非执行包
自己编写的非执行包也可以用类似的方法引用。
下面我们将继续以 Hello world 为例来说明如何编写非执行包并在其他包中引用。
首先,在 src 目录下创建一个子目录 package1,在其中新建一个代码文件 package1.go,代码如下:
package package1 import ( "fmt" ) func Hello() { fmt.Println("Hello world!") }
然后,在 src 目录下在创建一个子目录 test1,在其中新建一个代码文件 test1.go,代码如下:
package main import ( "package1" ) func main() { package1.Hello() }
最后,直接编译并执行 test1 包可以得到输出结果,如下:
我们再来研究一下这两个包的代码。package1 包的代码中,首先用以下代码:
package package1
声明了自己的包是 "package1"。
接下来的 import 语句导入了 fmt 包。
import( "fmt" ) func Hello(){ fmt.Println("Hello world") }
以上几行代码定义了一个 Hello 函数,功能是输出 "Hello world!"字样。特别要注意,在这里 Hello 函数的名字中,首字母 H 必须是大写字母。这是因为 Go 语言强制要求一个包中能够被其他包调用的函数必须是以大写字母开始命名的(这样的函数称作 exported function,即 "被导出的" 函数),小写字母开始的函数仅能在本地内部使用,对于其他包来说是 "不可见" 的。这也是 Go 语言与其他语言的一个显著不同之处。
再来看 test1 包,其中代码第一行声明了自己是 main 包,也就是可执行包。
package main
然后,import 语句中直接引用了 package1 这个包。
import{ "package1" }
接下来的可执行程序主函数 main 中,通过 "包名+.+函数名" 的方式调用了 package1 包中的 Hello 函数。
这个例子完整地演示了如何编写非执行包、如何在可执行包中引用自己编写的非执行包。package1 就是一个非执行包,而 test1 是一个可执行包,test1 包中调用了 package1 包中的 Hello 函数,输出了所需文字的信息。