导入cgo时不运行init()函数,使用import;";

导入cgo时不运行init()函数,使用import;";,go,init,cgo,Go,Init,Cgo,如果我将cgo导入go程序,init函数似乎不会运行。这种行为似乎是新的,因为go的一个(未指定)旧版本确实运行了init() 该程序分为几个go文件,全部在主程序包中。大多数其他文件都有一个init函数,可以执行以下操作: 31 func init() { 32 if len(testFunctionsMap) == 0 { 33 testFunctionsMap = make(funcPtrMap) 34 } 35 testFunctionsMap["somena

如果我将cgo导入go程序,init函数似乎不会运行。这种行为似乎是新的,因为go的一个(未指定)旧版本确实运行了init()

该程序分为几个go文件,全部在主程序包中。大多数其他文件都有一个init函数,可以执行以下操作:

31 func init() {
 32   if len(testFunctionsMap) == 0 {
 33     testFunctionsMap = make(funcPtrMap)
 34   }
 35   testFunctionsMap["somename"] = funcname
 36   initCtr++
 37 }

我添加了initCtr(全局)变量来跟踪调用了多少init函数;唯一没有调用的是我导入“C”的文件中的文件(附带特殊注释)

它似乎添加了以下内容: CGO_已启用=0。。。去建造。。。
在构建脚本中。毫不奇怪,cgo init函数没有运行——该文件中的其他任何东西也没有运行,但我从未做到这一点

它似乎增加了这一点: CGO_已启用=0。。。去建造。。。
在构建脚本中。毫不奇怪,cgo init函数没有运行——该文件中的其他任何东西也没有运行,但我从未做到这一点

您确定没有其他
init()
函数阻塞,也没有启动可能同时访问
testFunctionsMap
initCtr
的其他goroutine吗?谢谢@icza-用户错误-请参阅刚刚到来的答案…您确定没有其他
init()函数吗
函数阻止也不会启动可能同时访问
testFunctionsMap
initCtr
的其他goroutine?谢谢@icza-用户错误-请参阅刚刚到来的答案。。。