|
@@ -4,7 +4,7 @@
|
|
|
|
|
|
|
|
当写自己包的时候,要使用短小的不含有 `_`(下划线)的小写单词来为文件命名。这里有个简单例子来说明包是如何相互调用以及可见性是如何实现的。
|
|
当写自己包的时候,要使用短小的不含有 `_`(下划线)的小写单词来为文件命名。这里有个简单例子来说明包是如何相互调用以及可见性是如何实现的。
|
|
|
|
|
|
|
|
-当前目录下(examples/chapter9)有一个名为 package_test.go 的程序, 它使用了自定义包 pack1 中 pack1.go 的代码。这段程序(连同编译链接生成的 pack1.a)存放在当前目录下一个名为 pack1 的文件夹下。所以链接器将包的对象和主程序对象链接在一起。
|
|
|
|
|
|
|
+当前目录下(examples/chapter_9/book/)有一个名为 package_test.go 的程序, 它使用了自定义包 pack1 中 pack1.go 的代码。这段程序(连同编译链接生成的 pack1.a)存放在当前目录下一个名为 pack1 的文件夹下。所以链接器将包的对象和主程序对象链接在一起。
|
|
|
|
|
|
|
|
示例 9.4 [pack1.go](examples/chapter_9/book/pack1/pack1.go):
|
|
示例 9.4 [pack1.go](examples/chapter_9/book/pack1/pack1.go):
|
|
|
|
|
|
|
@@ -76,16 +76,16 @@ fmt.Printf(“Float from package1: %f\n”, pack1.pack1Float)
|
|
|
|
|
|
|
|
因此,按照惯例子目录和包之间有着密切的联系:为了区分不同包存放在不同的目录,每个包(所有属于这个包中的 go 文件)都存放在和包名相同的子目录下:
|
|
因此,按照惯例子目录和包之间有着密切的联系:为了区分不同包存放在不同的目录,每个包(所有属于这个包中的 go 文件)都存放在和包名相同的子目录下:
|
|
|
|
|
|
|
|
-Import with `.` :
|
|
|
|
|
-
|
|
|
|
|
|
|
+Import with `.` :
|
|
|
|
|
+
|
|
|
import . "./pack1"
|
|
import . "./pack1"
|
|
|
|
|
|
|
|
当使用`.`来做为包的别名时,你可以不通过包名来使用其中的项目。例如:`test := ReturnStr()`。
|
|
当使用`.`来做为包的别名时,你可以不通过包名来使用其中的项目。例如:`test := ReturnStr()`。
|
|
|
|
|
|
|
|
在当前的命名空间导入 pack1 包,一般是为了具有更好的测试效果。
|
|
在当前的命名空间导入 pack1 包,一般是为了具有更好的测试效果。
|
|
|
|
|
|
|
|
-Import with `_` :
|
|
|
|
|
-
|
|
|
|
|
|
|
+Import with `_` :
|
|
|
|
|
+
|
|
|
import _ "./pack1/pack1"
|
|
import _ "./pack1/pack1"
|
|
|
|
|
|
|
|
pack1包只导入其副作用,也就是说,只执行它的init函数并初始化其中的全局变量。
|
|
pack1包只导入其副作用,也就是说,只执行它的init函数并初始化其中的全局变量。
|