社区
其他技术讨论专区
帖子详情
关于init函数的执行
weixin_38052463
2019-09-20 10:40:13
为什么在init函数初始化server时是空的,然而在调用的时候却是有数据的,其中conf.GetWsServer()是读取配置文件中的数据,对server初始化的方法。求大神帮解析一下这个过程!!!
...全文
166
6
打赏
收藏
关于init函数的执行
为什么在init函数初始化server时是空的,然而在调用的时候却是有数据的,其中conf.GetWsServer()是读取配置文件中的数据,对server初始化的方法。求大神帮解析一下这个过程!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_38066102
2019-09-20
打赏
举报
回复
像我这种情况,server是要在项目的整个流程都要用的,只能初始化一次,有什么好的方法推荐吗
weixin_38066919
2019-09-20
打赏
举报
回复
初始化当然只有一次啊…… 你要整理下顺序。 一般来说,代码的执行顺序是这样的 各个package的init函数 main函数 main函数调用的函数。 从我的角度来看,你应该在man函数里发起调用初始化的函数。 以我自己的代码为例,大概是这样的: main函数:
模块的启动函数
weixin_38068785
2019-09-20
打赏
举报
回复
好,明白了,谢谢
weixin_38057020
2019-09-20
打赏
举报
回复
一般除非做过赋值,init时变量当然是空的啊…… init不是做这个事情的。 init在包引入的时候执行的,在main函数执行之前的。 你需要自己有一套合适的初始化流程
weixin_38059644
2019-09-20
打赏
举报
回复
其他地方还有对server做改动的操作吗,只能说init后server的确还是空的,但init到你getWsServer之间有什么操作就不知道了。
weixin_38060280
2019-09-20
打赏
举报
回复
只有在init调用的那个方法里初始化了,其他地方没有改动
一文读懂 Golang
init
函数
执行
顺序
Golang
init
函数
是一种特殊的
函数
,主要用于完成程序的初始化工作,如初始化数据库的连接、载入本地配置文件、根据命令行参数初始化全局变量等。
init
a
init
b
init
cmain
init
函数
是可选的,可以没有;与 main
函数
一样,不能有入参与返回值;与 main
函数
一样,
init
会自动
执行
,不能被其他
函数
调用;一个包内可以有多个
init
函数
,即可以在包的多个源文件中定义多个
init
函数
。
golang中
init
函数
的作用和
执行
时机
摘自知乎:理解golang的
init
函数
大家都知道golang里的main
函数
是程序的入口
函数
,main
函数
返回后,程序也就结束了。golang还有另外一个特殊的
函数
init
函数
,先于main
函数
执行
,实现包级别的一些初始化操作,今天我们就深入介绍下
init
的特性。
init
函数
的主要作用: 初始化不能采用初始化表达式初始化的变量。 程序运行前的注册。 实现sync.Once功能。 其他
init
函数
的主要特点:
init
函数
先于main
函数
自动
执行
,不能被其他
函数
调用;
init
函数
没有输入参数、
init
函数
及其使用(go语言基础语法)
init
函数
及其使用1.什么是
init
函数
2.
init
函数
注意事项 1.什么是
init
函数
每一个源文件都可以包含一个
init
函数
,
init
意为初始化,也表明
init
函数
会在main
函数
执行
之前
执行
。 例如: package main import "fmt" func
init
(){ fmt.Println("
init
函数
先
执行
") } func main(){ fmt.Println("mian
函数
后
执行
") } 2.
init
函数
注意事项 1.如果一个
函数
同时包含全局变量定义、
init
函数
、main函
Init
函数
和main
函数
1、
init
函数
go语言中
init
函数
用于包 (package) 的初始化,该
函数
是go语言的一个重要特性。 有下面的特征:
init
函数
是用于程序
执行
前做包的初始化的
函数
,比如初始化包里的变量等 每个包可以拥有多个
init
函数
包的每个源文件也可以拥有多个
init
函数
同一个包中多个
init
函数
的
执行
顺序go语言没有明确的定义(说明) 5、不同包的
init
函数
按照包导入的依赖关系决定该初始化
函数
的
执行
顺序
init
函数
不能被其他
函数
调用,而是在main
函数
执行
之前,自动被调用 2、main
函数
golang中的
init
函数
每个golang源文件中都可以定义一个
init
函数
。golang系统中,所有的源文件都有自己所属的目录,每一个目录都有对应的包名。在包的引用中,一旦某一个包被使用,则这个包下边的
init
函数
将会被
执行
,且只
执行
一次。只
执行
一次的含义是什么呢? 如果一个包被多个地方引用,那么只有在这个包第一次被引用时,才会
执行
这个包里边的
init
函数
,其他地方对包的再次引用,这个包里边的
init
函数
不会被
执行
,从这个意义上来讲,它类似于 sync.Once 。 ...
其他技术讨论专区
474
社区成员
791,036
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章