【问题】
折腾:
期间,对于如下代码:
1 2 3 4 5 | //do some init for crifanLib func init(){ fmt.Println( "init something" ); curCookies = nil } |
结果出错:
1 2 3 | E:\Dev_Root\go\src\EmulateLoginBaidu>go run EmulateLoginBaidu.go # command-line-arguments .\EmulateLoginBaidu.go:99: undefined: init |
如图:
即:
undefined: init |
【解决过程】
1.看起来,很简单,就是没有找到此处我的init函数。
2.添加上return,改为:
1 2 3 4 5 6 | //do some init for crifanLib func init(){ fmt.Println( "init something" ); curCookies = nil return } |
结果还是同样错误。
3.怀疑init是系统函数,所以改名:
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* Global Variables */ var curCookies []*http.Cookie; //do some init for crifanLib func initCrifanLib(){ fmt.Println( "init something" ); curCookies = nil return } func main() { initCrifanLib() } |
结果还真是,程序就可以正常执行了:
1 2 3 4 5 6 7 | E:\Dev_Root\go\src\EmulateLoginBaidu>go run EmulateLoginBaidu.go init something this is EmulateLoginBaidu.go filenameOnly= EmulateLoginBaidu logFilename= EmulateLoginBaidu.log baiduMainUrl=http://www.baidu.com/ E:\Dev_Root\go\src\EmulateLoginBaidu> |
如图:
【总结】
go语言中,不能随便定义自己的名为init的函数
估计是init函数,是go语言中默认的,模块相关的初始化的函数。
所以,此处自己定义一个init函数的话,再去别处调用init(),结果提示找不到init函数。
转载请注明:在路上 » 【已解决】go语言中函数编译出错:undefined: init