欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

golang 之 init 函数

程序员文章站 2022-07-12 08:02:33
...
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
相关标签: go init init函数