前言

asongGoinitinit
init
init
initmaininitinitinitinitinit
init
init

下图来源于网络:

截屏2021-06-05 上午9.55.15
init
constvarinitinitGo
var (
 a = c + b  // == 9
 b = f()    // == 4
 c = f()    // == 5
 d = 3      // == 5 after initialization has finished
)

func f() int {
 d++
 return d
}
dbca
initinitinitGo
initinit
init
initinit
init
init
initGoinitpprofinitinit
//go/1.15.7/libexec/src/cmd/trace/pprof.go
func init() {
 http.HandleFunc("/io", serveSVGProfile(pprofByGoroutine(computePprofIO)))
 http.HandleFunc("/block", serveSVGProfile(pprofByGoroutine(computePprofBlock)))
 http.HandleFunc("/syscall", serveSVGProfile(pprofByGoroutine(computePprofSyscall)))
 http.HandleFunc("/sched", serveSVGProfile(pprofByGoroutine(computePprofSched)))

 http.HandleFunc("/regionio", serveSVGProfile(pprofByRegion(computePprofIO)))
 http.HandleFunc("/regionblock", serveSVGProfile(pprofByRegion(computePprofBlock)))
 http.HandleFunc("/regionsyscall", serveSVGProfile(pprofByRegion(computePprofSyscall)))
 http.HandleFunc("/regionsched", serveSVGProfile(pprofByRegion(computePprofSched)))
}

这里就不扩展太多了,更多标准库中的使用方法大家可以自己去探索一下。

init
initinitinitinitinitgoroutinegoroutineinitmaininitmaininitGopackageinitimport _ "test_xxxx"okinitgoroutine

总结

initbug

关注 Asong,吸取他的知识 👆