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
下一篇: Java继承——父子类初始化
推荐阅读
-
Python学习笔记之自定义函数用法详解
-
在ASP.NET 2.0中操作数据之七十三:用Managed Code创建存储过程和用户自定义函数(上部分)
-
Python之range()函数使用
-
SQL SERVER函数之深入表值函数的处理分析
-
python学习笔记之调用eval函数出现invalid syntax错误问题
-
python中函数总结之装饰器闭包详解
-
Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式
-
PHP字符串函数系列之nl2br(),在字符串中的每个新行 ( ) 之前插入 HTML 换行符br
-
PHP的mysqli_stmt_init()函数讲解
-
js核心基础之构造函数constructor用法实例分析