hoge.go
package main
import "fmt"
var funcList = map[string]func(){
"listing": listing,
}
func listing() {
for key, _ := range funcList {
fmt.Println(key)
}
}
func main() {
funcList["listing"]()
}
$ go run hoge.go
# command-line-arguments
.\hoge.go:7: initialization loop:
C:\Users\…\GoSrc\tmp\hoge.go:7 funcList refers to
C:\Users\…\GoSrc\tmp\hoge.go:9 listing refers to
C:\Users\…\GoSrc\tmp\hoge.go:7 funcList
お、おう…
理由は分かる。宣言と定義を分けなくていいというのは楽なんだけど、こういう制限が発生するから、結局、利便性とのトレードオフだなぁ。