“ 每日一题”
先说今天做任务的时候遇到一个场景,本地go build编译成功的项目,在测试环境时报错:
/data/app/app-job/app-job flag redefined: confpanic: /data/app/app-job/app-job flag redefined: confgoroutine 1 [running]:flag.(*FlagSet).Var(0xc00010a180, 0x1b6e960, 0x2a9be50, 0x19596d4, 0x4, 0x19690a8, 0x13) /usr/local/go/src/flag/flag.go:850 +0x4afflag.StringVar(...) /usr/local/go/src/flag/flag.go:759go-gateway/app/app-svr/app-show/interface/conf.init.0() /go/src/go-main/app/app-svr/app-show/interface/conf/conf.go:279 +0x94
大意是重复定义了一个配置,不过转到报错的地方发现并没有任何地方引用这个方法,不知道什么时候两个包同时引用到这里导致的重复定义。
后来才发现这个方法是golang中特殊的init()函数。
下面先做一道题体会一下,求代码输出:
package mainimport "fmt"var T int64 = a()func init() {
fmt.Println("calling init1() in main")