網(wǎng)站首頁 編程語言 正文
概述
init()
一般用來做一些初始化工作, go允許定義多個(gè)init()
,根據(jù)init()
重復(fù)場(chǎng)景不同,可以分為
- 同文件 單文件中定義多個(gè)
init()
- 同模塊 同模塊下不同文件中定義了多個(gè)
init()
- 子模塊 本模塊和子模塊都包含
init()
- 跨模塊 多個(gè)被引用模塊中均含
init()
要點(diǎn)秘訣:
- 涉及引用時(shí),先加載的先執(zhí)行
- 同一文件中,先定義的先執(zhí)行
init()函數(shù)
init()
函數(shù)沒有參數(shù),也沒有返回值。
init()
函數(shù)在程序運(yùn)行時(shí),自動(dòng)自動(dòng)被調(diào)用執(zhí)行,不能在代碼中主動(dòng)調(diào)用它。
init()函數(shù)執(zhí)行順序和時(shí)機(jī) 執(zhí)行順序
先看一段執(zhí)行代碼:
package main import "fmt" var x int8 = 5 const name = "Vitalik" func init() { fmt.Println(x) } func main() { fmt.Println("Eth merge") }
輸出結(jié)果:
5
Eth merge
Exiting.
可見就目前三者來講順序如下:
全局變量?->?init() -> main()
執(zhí)行時(shí)機(jī)
Go
語言程序啟動(dòng)會(huì)先從main
包檢查其導(dǎo)入的所有包 ,每個(gè)包又可能導(dǎo)入了其他的包,由此Go
編譯器由此構(gòu)建出一個(gè)樹狀的包引用關(guān)系,再根據(jù)引用順序決定編譯順序,依次編譯這些包的代碼。
具體:
1. main引用的同級(jí)包,按引用順序依次編譯
2.包中再引用包,最底層的葉子節(jié)點(diǎn)的init()先編譯,依次往上調(diào)用
即,在運(yùn)行啟動(dòng)時(shí),最后導(dǎo)入的包會(huì)最先初始化并調(diào)用其init()
函數(shù),
原文鏈接:https://blog.csdn.net/feeltouch/article/details/126869416
相關(guān)推薦
- 2022-09-03 Python?pandas?DataFrame基礎(chǔ)運(yùn)算及空值填充詳解_python
- 2024-03-23 如何保證Redis和數(shù)據(jù)庫(kù)數(shù)據(jù)一致性
- 2024-03-15 docker刪除、停止所有容器或鏡像
- 2022-04-05 Python?Opencv基于透視變換的圖像矯正_python
- 2023-01-20 .Net執(zhí)行SQL存儲(chǔ)過程之易用輕量工具詳解_ASP.NET
- 2022-06-06 C++中隊(duì)列queue的用法實(shí)例詳解_C 語言
- 2022-08-01 C++簡(jiǎn)單又輕松的講解類和對(duì)象中友元函數(shù)_C 語言
- 2023-03-22 C++類中const修飾的成員函數(shù)及日期類小練習(xí)_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支