Go的保留函数init和main函数

Go Hello world

原文源码等更多内容可参见:http://blog.hyrscloud.com/topic/index?id=20

准备一个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!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值