Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

今回はエラーの紹介です。
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 でも共有してます!
是非フォローしてください!

https://twitter.com/ko_watanabe_tw

それでは!

ko-watanabe
好きなことを書く. 最近の関心:パフォーマンスチューニング よく書く言語:Ruby on Rails 興味言語:Ruby on Rails ・ swift ・ kotlin・Go・Javascript(Vue)
https://ko-watanabe.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away