golang init函数

栏目: Go · 发布时间: 5年前

内容简介:go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性,有下面的特征:下面的两个go文件演示了:

go语言中init函数用于包(package)的初始化,该函数是 go 语言的一个重要特性,

有下面的特征:

1 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等

2 每个包可以拥有多个init函数

3 包的每个源文件也可以拥有多个init函数

4 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)

5 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序

6 init函数不能被其他函数调用,而是在main函数执行之前,自动被调用

下面的两个go文件演示了:

1 一个package或者是go文件可以包含多个init函数,

 2 init函数是在main函数之前执行的,

 3 init函数被自动调用,不能在其他函数中调用,显式调用会报该函数未定义

gprog.go代码

package main

import (
"fmt"
)

// the other init function in this go source file
func init() {
    fmt.Println("do in init")
}

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

func testf() {
fmt.Println("do in testf")
//if uncomment the next statment, then go build give error message : .\gprog.go:19: undefined: init
//init()
}

ginit1.go代码,注意这个源文件中有两个init函数

package main

import (
"fmt"
)

// the first init function in this go source file
func init() {
fmt.Println("do in init1")
}

// the second init function in this go source file
func init() {
fmt.Println("do in init2")
}

编译上面两个文件:go build gprog.go ginit1.go

编译之后执行gprog.exe后的结果表明,gprog.go中的init函数先执行,然后执行了ginit1.go中的两个init函数,然后才执行main函数。

执行结果:

do in init
do in init1
do in init2
do in main

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Intersectional Internet

The Intersectional Internet

Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016

From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具