注意事项

导包时import _ 的作用

1
import _ "go-learn/example"

作用就是不导入该包的任何函数,主要用于执行包的 init 函数,用于初始化

包的循环导入

在 golang 当中是不允许包的循环导入,比如 B 包中导入了 A 包的函数,C 包中导入了 B 包的函数,A 包中导入了 C 包的函数

1
2
3
4
5
6
7
8
9
      +-----+
| A |
+-----+
↗ ↘
/ \
v v
+-----+ +-----+
| B | <-- | C |
+-----+ +-----+

go中的internal包

go 中 internal 包是内部包,不允许外部包访问,比如 Project/A/internal,只允许在 Project/A 的目录下的所有包访问,不允许 Project/A 之外的包访问,比如说 Project/B 下的包

1
2
3
4
5
6
7
Project/
├── A/
│ ├── internal/
│ │ └── x/
│ └── y/
└── B/
└── z/

这种情况就是 Project/A/y 下可以导入 internal 包,但是 Project/B/z 不行