Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Golang特殊init函数

Golang特殊init函数的实现实例

作者:两片空白

本文介绍了Go语言中特殊函数init()的作用,如变量初始化、包初始化顺序以及与main函数的关系,具有一定的参考价值,感兴趣的可以了解一下

介绍

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

作用:

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

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

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

使用

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

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

场景

package main

import (
	"math"
)

var pi float64

func init() {
	pi = 4 * math.Atan(1)

}
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函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文