Golang特殊init函数的实现实例

作者:

文章目录
  • init()函数是一个特殊的函数,存在一下特性 不能被其它函数调用,而是子main()函数之前自动调用 不能作为参数传入 不能有传入参数和返回值 作用: 对变量进行初始化 检查/修复程序状态 注册 运行一次计算 以下是<<the way to go>>的解释: 变量除了可以在全局声明中初始化,也可以在 init ()函数中初始化。这是一类非常特殊的函数,它不能够被人为调用,而是在每个包完成初始化后自动执行,并且执行优先级比 main 函数高。 每个源文件都只能包含一个 init() 函数(此处存在错误)。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。
  • 每个源文件都可以包含多个init()函数 导入包的顺序决定了init函数的执行顺序 go中不同包中init函数的执行顺序是根据包的导入关系决定。  init函数调用关系:图片来源网络
  • 对变量进行初始化 package main import ( “math” ) var pi float64 func init() { pi = 4 * math.Atan(1) } 在程序开始前,调用后台执行goroutine package main func init() { go backend() } 连接数据库 package main import ( “fmt” _ “github.com/go-sql-driver/mysql” “github.com/jmoiron/sqlx” ) var Db *sqlx.DB func init() { database, err := sqlx.Open(“mysql”, “root:xxx@tcp(127.0.0.1:3306)/test”) if err != nil { fmt.Println(“open mysql fail”, err) return } Db = database } 到此这篇关于Golang特殊init函数的实现实例的文章就介绍到这了,更多相关Golang特殊init函数内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 一篇文章读懂Golang init函数执行顺序 浅谈golang package中init方法的多处定义及运行顺序问题
  • 目录
    • 介绍
    • 使用
    • 场景

    init()函数是一个特殊的函数,存在一下特性

    • 不能被其它函数调用,而是子main()函数之前自动调用
    • 不能作为参数传入
    • 不能有传入参数和返回值

    作用:

    • 对变量进行初始化
    • 检查/修复程序状态
    • 注册
    • 运行一次计算

    以下是<<the way to go>>的解释:

    变量除了可以在全局声明中初始化,也可以在 init ()函数中初始化。这是一类非常特殊的函数,它不能够被人为调用,而是在每个包完成初始化后自动执行,并且执行优先级比 main 函数高。

    每个源文件都只能包含一个 init() 函数(此处存在错误)。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。

    • 每个源文件都可以包含多个init()函数

    • 导入包的顺序决定了init函数的执行顺序

    go中不同包中init函数的执行顺序是根据包的导入关系决定。

     init函数调用关系:图片来源网络

    • 对变量进行初始化

    package main
    
    import (
    	"math"
    )
    
    var pi float64
    
    func init() {
    	pi = 4 * math.Atan(1)
    
    }
    • 在程序开始前,调用后台执行goroutine
    package main
    
    func init() {
    	go backend()
    
    }
    • 连接数据库
    package main
    
    import (
    	"fmt"
    
    	_ "github.com/go-sql-driver/mysql"
    	"github.com/jmoiron/sqlx"
    )
    
    var Db *sqlx.DB
    
    func init() {
    	database, err := sqlx.Open("mysql", "root:xxx@tcp(127.0.0.1:3306)/test")
    	if err != nil {
    		fmt.Println("open mysql fail", err)
    		return
    	}
    
    	Db = database
    }

    到此这篇关于Golang特殊init函数的实现实例的文章就介绍到这了,更多相关Golang特殊init函数内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 一篇文章读懂Golang init函数执行顺序
    • 浅谈golang package中init方法的多处定义及运行顺序问题

    站内搜索