golang中的init函数以及main函数

究竟如何?深入研究在缺少main.go文件时如何运行Go代码 在Go语言中,包是代码组织的基本单元,而可执行程序需要一个特殊的main包和一个main函数作为入口点。main.go文件在可执行程序中承担了重要的角色,它包含了main函数,指示了程序的起点。通过理解包和可执行程序的概念,以及main.go文件的作用,您将能更好地组织和编写Go代码。希望本篇博客对您理解Go语言中包和可执行程序的概念有所帮助。让我们一起深入探索Go语言的奇妙世界!💡 有关Go安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~ 阅读详情

以下内容转载自 https://www.cnblogs.com/TimLiuDream/p/9929934.html

golang中的init函数以及main函数

 

首先我们看一个例子:init函数:

init 函数可在package main中,可在其他package中,可在同一个package中出现多次。

main函数

main 函数只能在package main中。

执行顺序

golang里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。

虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。

go程序会自动调用init()和main(),所以你不需要在任何地方调用这两个函数。每个package中的init函数都是可选的,但package main就必须包含一个main函数。

程序的初始化和执行都起始于main包。

如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。

当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依次类推。

等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。下图详细地解释了整个执行过程: 

使用autodl服务器运行CasMVSNet以及使用colmap产生的数据 MVSNet学习 阅读详情

相关推荐

STM32F407控制舵机

STM32F407控制舵机运行 使用STM32F407控制舵机,首先来看下舵机图片 [黑红白,黑线接GND,红线接VCC,信号线接白色线(有的舵机线的颜色不同,例如褐色红色橘色,仅颜色不同接法还如上述)] 舵机需要信号的周期为20ms,即频率为50Hz。 接下来正式操作: 步骤一:STM32F4程序(本次程序的PWM信号产生的周期频率由定时器TIM14通道1产生(TIM14_CH1),想要使用其它定时器也没关系下面会讲到) #include "pwm.h" void TIM14_CH1_PWM_In

Ievn_Hare的博客 1万+

【Go语言学习】——包

包程序编译后,首先会从main进入,然后将import下所有的导入路径的文件夹下所有的go文件和原来的文件打包编译成二进制程序。init()初始化函数在Go语言程序执行时导入包语句会自动触发包内部函数的调用。 函数没有参数也没有返回值,只有一个。 函数在程序运行时自动被调用执行,不能在代码中主动调用它。init没有参数也没有返回值,一个包里面可以有多个init函数。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-peWiSIDD-1654774542412)(Go学习.....

Kaychenl的博客 382

2025软考信息安全工程师真题

2025信息安全工程师软考真题

qq_40424393的博客 1706

【Go】Go语言中的 Init 函数和 main 函数

文章目录一、init 函数1. init 函数的作用2. init 函数的特征3. 多个 init 函数的执行顺序4. Go 程序的初始化二、main 函数三、init 函数和 main 函数的异同四、实例实例一实例二实例三实例四实例五实例六实例七参考链接 一、init 函数 1. init 函数的作用 go语言中的 init 函数用于包(package)的 初始化 ,该函数是go语言的一个重要特性。 主要作用是: 初始化 不能采用初始化表达式 初始化的变量。 程序运行前的注册。 实现sync.Once

weixin_44211968的博客 2681

cadence virtuoso 激励信号源

vpulse,vpwl,vsin,vsource信号源介绍

努力学习的IC小白 3万+

Docker - 基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载

p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口(配置映射是因为用户只能通过 http 请求访问到服务器,不能直接访问到对应的容器,因此需要服务器端口与容器端口建立映射关系)这里我们有两种启动 redis 的方式,第一种是直接启动 redis ,第二种是以 AOF 持久化的方式启动容器(--appendonly yes),如下图。如果需要持续查看日志信息可以添加 -f 参数,例如:docker logs -f mn ,这里 mn 是自定义容器名称, ctrl + c 可以停止跟踪。

CYK_byte的博客 1万+

Golang的init函数和main函数

一、init函数 在Go中,init函数是用于包(package)的初始化。 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等 每个包可以拥有多个init函数 包的每个源文件也可以拥有多个init函数 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明) 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序 init函数不能被其他函数调用,而是在main函数执行之前,自动被调用 二、main函数 像其他编程语言一样,main函数也是Go语言程序的默认入口

Chasel_H 1202

推荐一个直接用于项目开发的PID库!很好用,很稳定

关注、星标公众号,不错过精彩内容大家好,我是小麦。最近有朋友问到有没有现成的C语言PID库。当然有了!现在我就准备给大家安利一下了。一般同学会去某度上搜,看到各种各样版本的PID示例,或者...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 9022

golang 中的 init 和 main函数

等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依次类推。说明如果一个包会被多个包同时导入,那么它只会被导入一次,而先输出lib2是因为main包中导入Lib1时,Lib1又导入了Lib2,会首先初始化Lib2包的东西。两个保留的函数:init函数。

墨痕诉清风的博客 816

CAN总线介绍及硬件设计

1. CAN是什么 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很 多,线束的数量也随之增加。为适应“减少线束的数量”、“......

sinat_15677011的博客 9991

自动驾驶算法/规划决策控制算法面经汇总、学习路线、面经心得

自动驾驶算法学习路线,面试求职大全

qq_41667348的博客 1万+

golang的init函数和main函数

此文转载自本人微信公众号:lishinho杂货铺 先说今天做任务的时候遇到一个场景,本地go build编译成功的项目,在测试环境时报错: /data/app/app-job/app-job flag redefined: confpanic: /data/app/app-job/app-job flag redefined: confgoroutine 1 [running]:flag.(*FlagSet).Var(0xc00010a180, 0x1b6e960, 0x2a9be50, 0x19.

lishinho的博客 944

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Go语言中main与init函数详解

Go语言中main()和init()是两个特殊函数,均由运行时自动调用。main()是程序唯一入口,必须定义在main包中;init()用于包初始化,可在任意包中定义多个。执行顺序为:依赖包初始化→包级变量初始化→init()→main()。init()适合轻量级初始化如加载配置、注册组件,而main()负责核心业务逻辑和错误处理。使用时需注意避免init()中的耗时操作、循环依赖等问题,复杂初始化建议封装为显式函数在main()中调用。

不会写DN的博客 804

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

go init函数和 main函数

init函数 go语言中 init 函数用于包 package的初始化,该函数是go语言的一个重要特征 有以下的特征 1、init函数是用于程序执行钱做包的初始化的函数,比如初始化包里的变量等 2、每个包可以拥有多个init函数 3、包的每个源文件也可以拥有多个init函数 4、同一个包中多个init函数的执行顺序go语言没有明确的定义(说明) 5、不同包的init函数按照包导入的依赖关系觉得该初始化函数的执行顺序 6、init函数不能被其他函数调用,二十在main函数执行之前,自动被调用 main函数 g

qq_36898429的博客 228

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

golang init和main函数

Go里面有两个保留的函数:init函数和main函数。下边就来比较一下两个函数的异同。 相同点:两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。 不同点:init可以应用于任意包中,且可以重复定义多个。main函数只能用于main包中,且只能定义一个。 下边说一下两个函数的执行顺序: 对同一个go文件的init()调用顺序是从上到下的 对同一个package中不同文件是

liushaoming 2943

Go-init函数与main函数

1. main函数 func main() { // 函数体 } Go语言程序的默认入口函数,main函数只能用于main包中,且只能定义一个,类似PHP框架中的index.php 2. init函数 Go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性,用途类似于PHP中的__construct魔术方法 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等 每个包可以拥有多个init函数 包的每个源文件也可以拥有多个init函数 同一个包中多个

Mossil的博客 462

go中的main函数和init函数

http://blog.youkuaiyun.com/rznice/article/details/18987047   Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强

liukuan73的专栏 1800

GO语言之Init函数和main函数

00.Init函数和main函数 一、init函数 go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性。 有下面的特征: init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等 每个包可以拥有多个init函数 包的每个源文件也可以拥有多个init函数 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明) 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序 init函数不能被其他函数调用,而是在main函数执行之前,自动被调用

淘小欣的博客 547

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 pa

利哥AI实例探险 360

【计算机编程语言-Golang】init和main两个特殊函数

在 Go 语言中,init 和 main 是两个特殊的函数,它们在程序启动时有特定的作用和调用时机。除了这两个,Go 没有其他具有特殊意义的函数,这是由 Go 语言的设计决定的,旨在保持语言的简洁和清晰。init 函数用于初始化设置,每个包可以有多个 init 函数,这些函数在程序开始执行时自动被调用,且在任何其他代码执行前完成。init 函数不能被其他函数调用。// 函数体 }main 函数是程序的入口点,只能在 main 包中出现一次。在 init 函数之后被调用,用于执行程序的主要操作。

AI云极的博客 750
上一篇: golang GO111MODULE 以及GOPROXY配置
下一篇: Go strings.Split()函数
shankusu2017
博客等级 码龄15年 155粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值