DRYな備忘録

Don't Repeat Yourself.

【Go言語】循環参照"import cycle"についてメモ

$GOPATH/src/foo/foo.go

package foo

import "bar"

func Foo() {
    println("foo.Foo")
}
func CallBar() {
    bar.Bar()
}

$GOPATH/src/bar/bar.go

package bar

import "foo"

func Bar() {
    println("bar.Bar")
}
func CallFoo() {
    foo.Foo()
}

buildしてみる

% cd $GOPATH/src/foo
% go build
can\'t load package: : import cycle not allowed
package foo
    imports bar
    imports foo
: import cycle not allowed
package foo
    imports bar
    imports foo
%

まとめ

AがBをimportして、BがAをimportしちゃだめ