image.png

1、导包错误解决:https://blog.csdn.net/weixin_44676081/article/details/107279746
2、函数名大写,包外可调用,小写只能在包内调用
3、案例:
image.png

  1. package lib1
  2. import "fmt"
  3. func init() {
  4. fmt.Println("lib1 init ....")
  5. }
  6. //方法名首字母大些,相当于public修饰,别的包可调用
  7. func Lib1Api() {
  8. fmt.Println("lib1的方法执行")
  9. }
  1. package lib2
  2. import "fmt"
  3. func init() {
  4. fmt.Println("lib2 init ....")
  5. }
  6. func Lib2Api() {
  7. fmt.Println("lib2的方法执行")
  8. }
  1. package main
  2. import (
  3. "helloworld/src/5-init/lib1"
  4. "helloworld/src/5-init/lib2"
  5. )
  6. func main() {
  7. lib1.Lib1Api()
  8. lib2.Lib2Api()
  9. }

结果:
image.png
1)在 import导包时,先导lib1的包,执行init方法:lib1 init ….
2)再导lib2的包,执行init方法:lib2 init ….
3)再执行mainTest里面的main方法,分别调用lib1 和 lib2包的方法

匿名与别名

  1. package main
  2. import (
  3. //匿名别名 _ :导入这个包,但是不使用这个包,只用于这个包的init来进行一些初始化
  4. _ "helloworld/src/5-init/lib1"
  5. //别名:自定义为mylib2
  6. //mylib2 "helloworld/src/5-init/lib2"
  7. //加点,可以不用写包名;尽量不使用加点的,因为别的包也加点,如果有同名方法,容易引起冲突
  8. . "helloworld/src/5-init/lib2"
  9. )
  10. func main() {
  11. //匿名
  12. //lib1.Lib1Api()
  13. //别名
  14. //mylib2.Lib2Api()
  15. //加点
  16. Lib2Api()
  17. }