长兴县建设管理网站,网上如何建网站,南宁网站排名优化,个人网站的网页目录 1. init 函数2. main 函数3. init 函数与 main 函数异同4. _ (下划线)示例 1. init 函数
Go语言中#xff0c;init 函数用于包#xff08;package#xff09;的初始化。具有以下特征#xff1a;
1. init 函数用于程序执行前包的初始化#xff0c;如初始化变量等。2… 目录 1. init 函数2. main 函数3. init 函数与 main 函数异同4. _ (下划线)示例 1. init 函数
Go语言中init 函数用于包package的初始化。具有以下特征
1. init 函数用于程序执行前包的初始化如初始化变量等。2. 每个包可拥有多个 init 函数。3. 包的每个源文件可有多个 init 函数执行顺序有上到下。4. 同一个包中多个 init 函数的执行顺序 Go 语言没有明确定义。5. 不同包的 init 函数按照包导入的依赖关系决定该初始化函数的执行顺序。6. init 函数不能被其它函数调用在 main 函数执行之前自动被调用。2. main 函数
Go语言默认入口函数主函数
3. init 函数与 main 函数异同
相同点均无参数和返回值由Go程序自动调用。不同点init 函数可以应用于任意包中且可重复多个main 函数只能用于 main 包且只能定义一个。
4. _ (下划线)
- 是特殊标识符用来忽略结果。 import 中使用 当导入一个包时该包下所有init()函数都会执行如果我们并不需要把整个包导入进来仅仅希望执行它的init()函数。就可使用下划线_引入该包 import _ package 仅调用了init()函数无法调用包内其它函数。 在代码中使用 占位符忽略变量意思是那个位置本应赋给某个值但咱们不需要这个值所以就把该值赋给下划线意思是丢掉不要这样编译器可以更好的优化。 这种情况就是占位用的方法返回两个结果而你只想要一个结果那另一个就用 “_” 占位。而如果用变量的话变量不使用编译器是会报错。 任何类型的单个值都可以丢给下划线。
示例
代码结构如下 src --- main.go --- learn--- mynote.go--- hello--- hello.golearn/mynote.go 代码
package learnimport (fmt
)func init() {fmt.Println(Exec the init func of mynote!)
}// 一个文件可以有多个init函数同样证明一个包可以有多个init函数
func init() {fmt.Println(Second exec the init func of mynote!)
}func Note() {fmt.Println(Golang study note!)
}hello/hello.go 代码
package helloimport (fmt
)func init() {fmt.Println(Exec the init func of hello.go!)
}func SayHello() {fmt.Println(Hello, Everyone!)
}func MultiReturn() (int, string) {return 100, 一百
}main.go 代码
package mainimport (_ learn hellofmt
)func main() {// 无法调用learn内的函数被 _ 忽略// learn.Note()hello.SayHello()i, s : hello.MultiReturn()fmt.Printf(i%d, s%s \n, i, s)// _ 忽略返回变量i1, _ : hello.MultiReturn()fmt.Printf(i1%d, i1)
}执行 go run ./执行整个包使用 ./
PS F:\SelfProject\Go\Learning go run ./
Exec the init func of mynote!
Second exec the init func of mynote!
Exec the init func of hello.go!
Heollo, Everyone!
i100, s一百
i1100