https://segmentfault.com/a/
go的包不允许循环包含,具体例子:
main.go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main import ( "fmt" "test/pkg1" ) func main() { fmt.Println("in main.main") fmt.Printf("pkg1.Black=%s\n", pkg1.Black) fmt.Printf("pkg2.Black=%s\n", pkg2.Black) } func init() { fmt.Println("in main.init") fmt.Printf("pkg1.Black=%s\n", pkg1.Black) fmt.Printf("pkg2.Black=%s\n", pkg2.Black) }
|
pkg1.go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package pkg1 import ( "fmt" "test/pkg2" ) const ( Black string = "#000" white string = "#fff" ) func init() { fmt.Println("in pkg1.init") fmt.Printf("pkg2.Black=%s\n", pkg2.Black) }
|
pkg2.go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package pkg2 import ( "fmt" "test/pkg1" ) const ( Black string = "#000" white string = "#fff" ) func init() { fmt.Println("in pkg2.init") fmt.Printf("pkg1.Black=%s\n", pkg1.Black) }
|
go build报错:
1
| import cycle not allowed
|