golang 之 init 函数

init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高。
init 函数通常被用来:

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

特性
init函数不需要传入参数,也不会返回任何值。与main相比而言,init没有被声明,因此也不能被引用。
每个源文件中可以包含多个init函数
package main

import "fmt"

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

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

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

/*执行结果:
init1
init2
main */

示例

项目一般目录结构
src : 放源码目录
bin :生成的可执行程序目录
pkg :放平台的相关库
├── bin
│ 
├── pkg
│  
├── scr
│   ├── calc
│   │   └── calc.go
│   ├── debug
源代码
//程序入口
# vim main.go
package main

import (
	"day3/init/calc"
	"fmt"
)

// 2 、再执行这个打印
func init() {
	fmt.Println("this is main")
}

func main() {
	add := calc.Add(5, 2)
	minus := calc.Minus(6, 3)

	fmt.Println("a + b = ", add)
	fmt.Println("a - b = ", minus)
}


# vim /src/calc.go
package calc

import (
	"fmt"
	"os"
)

// 1、先执行这个init 打印
func init() {
	hostname, err :=os.Hostname()
	if hostname == "" || err != nil {
		hostname = "localhost"
	}
	fmt.Println("this init name: ", hostname)
}

func Add(a, b int) int {
	return a + b
}

func Minus(a, b int) int {
	return a - b
}
执行结果
this init name:  victor.local
this is main
a + b =  7
a - b =  3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值