您的位置 首页 golang

Go的保留函数init和main函数

Go Hello world

准备一个main.go文件,敲入如下编码,

在main.go目录下,通过cmd敲入 go run main.go 回车即可运行

  package main
 
 import "fmt"
 
 func main() {
     fmt.Println("Hello, World!")
 }  

Go的保留函数init和main函数

多个文件要使用编译运行 go build

  package main
 
 import (
     "fmt"
     _ "golang_mainInit_Src/initmaintest1"
     _ "golang_mainInit_Src/initmaintest2"
 )
 
 /*
     1. main() 与 init() 两个函数在定义时不能有任何的参数和返回值,且Go程序会自动调用;
     2. init() 可以应用于任意包中,且可以重复定义多个,main()函数只能用于main包,且只能定义一个;
     3. 执行顺序:
         a. 对于一个go文件的 init() 调用顺序是从上到下的;
         b. 对于同一个package中不同文件时按文件名字符串比较 "从小到大" 顺序调用各文件中的init()函数;
         c. 对于不同的package
             - 如果不相互依赖:按照main()包中先import的后调用的顺序调用其包中的init();
             - 如果存在依赖,则先调用最早被依赖的package中的init();
         d. 最后调用main()函数,如果init()函数中使用了Println或者Print,这两个函数官方只推荐在测试环境中使用。
 */ func main() {
     fmt.Println("最后调用main()函数, Hello, World!")
 }
 
 func init() {
     fmt.Println("对于一个go文件的 init() 调用顺序是从上到下的---1")
 }
 
 func init() {
     fmt.Println("对于一个go文件的 init() 调用顺序是从上到下的---2")
 }
   

运行结果:

  对于不同的package 如果不相互依赖:按照main()包中先import的后调用的顺序调用其包中的init(); 如果存在依赖,则先调用最早被依赖的package中的init();--1
 对于不同的package 如果不相互依赖:按照main()包中先import的后调用的顺序调用其包中的init(); 如果存在依赖,则先调用最早被依赖的package中的init();--2
 对于同一个package中不同文件时按文件名字符串比较 "从小到大" 顺序调用各文件中的init()函数---1
 对于同一个package中不同文件时按文件名字符串比较 "从小到大" 顺序调用各文件中的init()函数---2
 对于一个go文件的 init() 调用顺序是从上到下的---1
 对于一个go文件的 init() 调用顺序是从上到下的---2
 最后调用main()函数, Hello, World!  

文章来源:智云一二三科技

文章标题:Go的保留函数init和main函数

文章地址:https://www.zhihuclub.com/96310.shtml

关于作者: 智云科技

热门文章

网站地图