Golang入门笔记(8)—— init 函数

        init 函数 : 每一个源文件都可以包含一个init函数,该函数会在 程序入口main函数执行前 ,被Go运行的框架进行调用。

              测试代码:

package main

import (
	"fmt"
)

func init() {
	fmt.Println("init...")
}

func main() {
	fmt.Println("main...")
}

console 输出:

init...
main...

        很明显,此源文件的init函数是比main函数,优先执行的。所以init函数适合处理一些初始化的工作,然后再调用主函数。

细节讨论:

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

        变量的定义 => init函数 => main主函数  (可知变量的定义,比2个函数运行-跑的要早一些)

package main

import (
	"fmt"
)

// 为了看到全局变量是先被初始化的,我们这里先一个函数来完成。
var age int = globalVariablesInit()

func globalVariablesInit() int {
	fmt.Println("globalVariablesInit ... ")
	return 90
}

func init() {
	fmt.Println("init...")
}

func main() {
	fmt.Println("main...")
}

        在做项目的时候,这个知识点有巨大的作用。比如,现在有2个类。

当前类属性,我希望别人访问时就有值,我们可以通过init函数对其进行赋值

       如下函数读取时,就可以拿到在init中赋予的Name和Age 的值了。

package main

import (
	"fmt"
	"go-helloworld/class02/util"  //导入util包 ,以使用的外部函数或变量
)

func main() {
	fmt.Println(util.Name)
	fmt.Println(util.Age)
}
  • 面试题:案例中,如果main.go 和 util.go 都含有变量定义,init 函数,执行的顺序。 

  答: 先执行外部引入文件的    再 执行内部使用处代码,即:

 util.go 变量定义  => util.go  init 函数)

=> main.go 变量定义  => main.go 的init函数  =>  main.go的main函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值