1
2 /*
3 单个包:
4 improt "包目录的路径"
5 多个包:
6 improt ("包目录的路径", "包目录的路径")
7 improt (
8 "包目录的路径"
9 "包目录的路径"
10 )
11 自定义引用的包名 :
12 import (
13 "包目录的路径"
14 "crypto/rand"
15 自定义名 "包目录的路径" // 将名称替换为mrand避免冲突
16 r "crypto/rand"
17 )
18 只导入包但不使用包 :
19 import (
20 _ "path/to/package"
21 )
22 初始化入口:init()
23 每个源码可以使用 1 个 init() 函数。
24 init() 函数会在程序执行前(main() 函数执行前)被自动调用。
25 调用顺序为 main() 中引用的包,以深度优先顺序初始化。
26 在运行时,被最后导入的包会最先初始化并调用 init() 函数 : main→A→B→C,那么这些包的 init() 函数调用顺序为: C.init→B.init→A.init→main
27 同一个包中的多个 init() 函数的调用顺序不可预期。
28 init() 函数不能被其他函数调用
29
30 例如,为了提高数学库计算三角函数的执行效率,可以在程序启动时,
31 将三角函数的值提前在内存中建成索引表,外部程序通过查表的方式迅速获得三角函数的值。
32 但是三角函数索引表的初始化函数的调用不希望由每一个外部使用三角函数的开发者调用,
33 如果在三角函数的包内有一个机制可以告诉三角函数包程序何时启动,那么就可以解决初始化的问题
34 */
35
36 package info_packge
37
1 /*
2 goLang引入自定义包规则:
3 1 : 设置$GOPATH环境变量
4 2 : 自定义包里面对外提供的API函数,首字母必须大写
5 3 : 包的编译和安装:
6 包的.go文件必须存放在一个独立的文件夹下(如test)
7 然后对test文件夹使用 go build 和 go install 命令:之后在$GOPATH下添加生成pkg文件夹,
8 文件夹下则生成test.a文件(因此,包文件的父文件夹名最好和包名一致)
9 4 : 包的使用 :
10 生成包的名字和包的真实名字可以不一致
11 project/src/test/my.go
12 main.go
13 pkg/XXXXXX/test.a
14
15 */
16 package info_packge