LoginSignup
32
11

More than 3 years have passed since last update.

Golang で import cycle not allowed に引っかかった人へ

Last updated at Posted at 2019-09-25

はじめに

今回はエラーの紹介です。
Golang 初心者の方で、packageに、こんなエラーが出た人はいるんではないでしょうか??

スクリーンショット 2019-09-25 11.41.10.png

can't load package: import cycle not allowed

import cycle ってなんやねん?
って人向けに記事を書きます。

シンプルに関数を互いのパッケージで使わないでねって意味

成功例

例えばなんですけど

main.go
import "./a"

func main() {
    a.PrintGreeting()
}
a/sample.go
package a

import (
    "fmt"

    "../b"
)

func PrintGreeting() {
    test := b.Greeting()
    fmt.Println(test)
}
b/sample.go
package b

func Greeting() string {
    return "hello world"
}

っていうファイルがあって

$ go run main.go

の実行結果が

hello world

みたいになります。

失敗例

main.go
import "./a"

func main() {
    a.PrintGreeting()
}
a/sample.go

package a

import (
    "fmt"

    "../b"
)

func PrintGreeting() {
    test := b.SecondGreeting()
    fmt.Println(test)
}

func FirstGreeting() string {
    return "hello world"
}
b/sample.go

package b

import "../a"

func SecondGreeting() string {
    return a.FirstGreeting()
}

このときに、今回のエラーが出ます!(汗)

つまりは、パッケージ内の関数を互いに呼んだときにエラーが出てるということです。(Cycleってそういう意味!)

関数を闇雲に沢山作っていくと、こういうエラーに遭遇します。

結論

設計を大事にしてメソッドを闇雲に生やすのは辞めましょう〜

宣伝

Qiitaの更新情報は Twitter でも共有してます!
是非フォローしてください!

それでは!

32
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
11