go的包不允许循环包含,具体例子:
main.go:
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",pkg2.Black) }
pkg1.go:
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:
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报错:
import cycle not allowed