最新消息:服务器现已从linode换到fzhost.net,且主题已从retina 0.2换为大前端D8

【已解决】go语言中函数编译出错:undefined: init

GO crifan 13浏览 0评论

【问题】

折腾:

【已解决】go语言中的全局变量

期间,对于如下代码:

//do some init for crifanLib
func init(){
    fmt.Println("init something");
    curCookies = nil
}

结果出错:

E:\Dev_Root\go\src\EmulateLoginBaidu>go run EmulateLoginBaidu.go
# command-line-arguments
.\EmulateLoginBaidu.go:99: undefined: init

如图:

go code function error undefined init

即:

undefined: init

【解决过程】

1.看起来,很简单,就是没有找到此处我的init函数。

2.添加上return,改为:

//do some init for crifanLib
func init(){
    fmt.Println("init something");
    curCookies = nil
    return
}

结果还是同样错误。

3.怀疑init是系统函数,所以改名:

/* Global Variables */
var curCookies []*http.Cookie;

//do some init for crifanLib
func initCrifanLib(){
    fmt.Println("init something");
    curCookies = nil
    return
}

func main() {
    initCrifanLib()
}

结果还真是,程序就可以正常执行了:

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 code can run with self init func

 

【总结】

go语言中,不能随便定义自己的名为init的函数

估计是init函数,是go语言中默认的,模块相关的初始化的函数。

所以,此处自己定义一个init函数的话,再去别处调用init(),结果提示找不到init函数。

转载请注明:在路上 » 【已解决】go语言中函数编译出错:undefined: init

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
53 queries in 0.534 seconds, using 12.41MB memory