Go语言之函数使用(6)init函数

一、基本介绍

每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会在main函数前被调用。

二、快速入门案例

package main
import (
    "fmt"
)
/
//每一个源文件都可以包含一个init函数,该函数会在main函数执行前,
//被Go运行框架调用,也就是说init会在main函数前被调用
func init() {

    fmt.Println("init()被调用。。。")
}
func main() {

    fmt.Println("main()被调用。。。") 
}

三、init函数使用细节和注意事项

1、如果一个文件同时包含全局变量定义,init函数和main函数,则执行的流程是
全局变量定义->init函数->main函数
Utils.go

package utils

import (
    "fmt"
)

var IP =getIP()
func getIP()  string {
    fmt.Println("utils---------getIP---------")
    return "127.0.0.1"
}
func init()  {
    fmt.Println("utils---------init---------")
}
func Test()  {
    fmt.Println("utils---------test---------")
}

Main.go

package main

import (
    "fmt"
    "go_code/grammar/function/init/code/utils"
)
var IP =getIP()
func getIP()  string {
    fmt.Println("main---------getIP")
    return "127.0.0.1"
}
func init()  {
    fmt.Println("main---------init")
}
func main()  {
    fmt.Println("main1---------",utils.IP)
    utils.Test()
    fmt.Println("main---------main")
    fmt.Println("main---------IP",IP)
    fmt.Println("main---------",utils.IP)
    utils.Test()
}

测试结果:

e:\GoProject\src\go_code\grammar\function\init\code\main>go run main.go
utils---------getIP---------
utils---------init---------
main---------getIP
main---------init
main1--------- 127.0.0.1
utils---------test---------
main---------main
main---------IP 127.0.0.1
main--------- 127.0.0.1
utils---------test---------

e:\GoProject\src\go_code\grammar\function\init\code\main>

2、面试题:main.go 和 utils.go 都含有 全局变量定义,init函数时,执行的流程又是怎么样的呢?
引入函数全局变量->引入函数init函数->main函数全局变量->main函数init函数->main函数

3、init函数最主要的作用,就是完成一些初始化的工作。初始化一些网络连接,数据库连接池等。

func init() {
    //当服务器启动时,我们就去初始化我们的redis的连接池
    initPool("localhost:6379", 16, 0, 300 * time.Second)
    initUserDao()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值