前言
asongGoinitinit
init
init
initmaininitinitinitinitinit
init
init
下图来源于网络:
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,吸取他的知识 👆