GOGOUP-5.init函数和Import导包

万丈高楼平地起-init函数和Import导包

  • golang 导入依赖库总是会执行init函数、其执行流程如图所示
    GOGOUP-5.init函数和Import导包
  • 验证代码 注意( go env -w GO111MODULE=on 会出现编译报错问题:package gogoup/initfunc_import/lib1 is not in GOROOT (/usr/local/go/src/gogoup/initfunc_import/lib1)、设置成outo或者off即可)
    //lib1
    package lib1
    
    import (
    	"fmt"
    	"gogoup/initfunc_import/lib2"
    )
    
    func Test() {
    	fmt.Println("lib1 的Test()函数被执行了")
    	lib2.Test()
    }
    func init() {
    	fmt.Println("lib1 的init()函数被执行了 ")
    }
    //lib2
    package lib2
    
    import "fmt"
    
    func Test() {
    	fmt.Println("lib2 的Test()函数被执行了")
    }
    func init() {
    	fmt.Println("lib2 的init()函数被执行了 ")
    }
    //main
    package main
    
    import "gogoup/initfunc_import/lib1"
    
    func main() {
    	lib1.Test()
    }
    
    
    
  • 代码结构
    GOGOUP-5.init函数和Import导包
  • 执行结果
    GOGOUP-5.init函数和Import导包

导包的骚操作

  • 使用 _ "gogoup/initfunc_import/lib2" 匿名导入包,常见数据库驱动为了执行init函数中的配置
  • 使用 lb "gogoup/initfunc_import/lib2" 别名导入包,使用方式lb.Test()
  • 使用 . "gogoup/initfunc_import/lib2" 导入包所有的方法到本作用域(不推荐)

GOGOUP-5.init函数和Import导包

上一篇:和我一起开发Android应用(二)——“悦词-i背单词”项目功能分析


下一篇:Nginx系列教程(06) - 配置反向代理