golang

Golang 循環参照 ではまった

https://www.slideshare.net/pospome/ss-69946057

要するにpakageAがpakageBをみてpakageBがpakageAを見ると循環参照になりコンパイルエラーになる。

これでテストコードを書くときにハマった。


package logic

import (
    "###/logic"
)

func AAA() {

}

pakage logic_test
import (
    "###/logic"
)

func TestAAA (t *testing.T) {
}

↑は動く



package logic

import (
    "###/logic"
)

func AAA() {

}

パッケージを同じにしよう。
importの###/logicは 必要ないから _ で握りつぶして…


pakage logic
import (
    _ "###/logic"
)

func TestAAA (t *testing.T) {
}

循環参照です!!

_って握りつぶしているだけで、import自体は行っているため、循環参照となるよう。

コメントアウトするか、importするパッケージを消す。
単純なことだが、結構ハマった。

↓正しい形


pakage logic
import (
    //  "###/logic"
)

func TestAAA (t *testing.T) {
}