diff --git a/base/package/calc/calc.go b/base/package/calc/calc.go index 5690bc3..1c6bf0a 100644 --- a/base/package/calc/calc.go +++ b/base/package/calc/calc.go @@ -1,5 +1,14 @@ package calc +import "fmt" + +// 导入包时自动触发 init 函数 +// init 函数既没有参数也没有返回值 +// 不能在代码中主动调用 +func init() { + fmt.Println("calc 包被导入") +} + // 包中的标识符 // 如果首字母为小写 则表示为私有 只在当前包内生效 对外不可见 // 如果为大写 则表示为共有 对外部可见 diff --git a/base/package/main.go b/base/package/main.go index 80b328a..2d26a89 100644 --- a/base/package/main.go +++ b/base/package/main.go @@ -1,14 +1,32 @@ package main +// 单行导入 +//import "fmt" + +// 多行导入 import ( "fmt" // 如果使用 go mod init package 建立主包 则为相对于主包的路径 "package/calc" // 默认使用相对于 GOPATH/src 下的路径 //"skcks.cn/Shikong/golang-study/base/package/calc" + + // 自定义包名 + // 别名 包路径 + c "package/calc" + + // 匿名 导入包 + // 只导入包 而不使用包内的数据/方法 + // 一般用于触发 包 的 init 初始化 + _ "package/calc" + // 多次导入同一个包实际只会执行一次 init 方法 ) +func init() { + fmt.Println("package 包初始化") +} + func main() { fmt.Println(calc.Add(1, 2)) - + fmt.Println(c.Add(1, 2)) }