濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 詳解golang避免循環(huán)import問(wèn)題(“import cycle not allowed”)

詳解golang避免循環(huán)import問(wèn)題(“import cycle not allowed”)

熱門(mén)標(biāo)簽:浙江高速公路地圖標(biāo)注 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 高德地圖標(biāo)注口訣 中國(guó)地圖標(biāo)注省會(huì)高清 地圖標(biāo)注的汽車標(biāo) 西部云谷一期地圖標(biāo)注 南通如皋申請(qǐng)開(kāi)通400電話 學(xué)海導(dǎo)航地圖標(biāo)注 廣州呼叫中心外呼系統(tǒng)

前言

golang不允許循環(huán)import package ,如果檢測(cè)到 import cycle ,會(huì)在編譯時(shí)報(bào)錯(cuò),通常import cycle是因?yàn)樵O(shè)計(jì)錯(cuò)誤或包的規(guī)劃問(wèn)題。

以下面的例子為例,package a依賴package b,同事package b依賴package a

package a

import (
 "fmt"

 "github.com/mantishK/dep/b"
)

type A struct {
}

func (a A) PrintA() {
 fmt.Println(a)
}

func NewA() *A {
 a := new(A)
 return a
}

func RequireB() {
 o := b.NewB()
 o.PrintB()
}

package b:

package b

import (
 "fmt"

 "github.com/mantishK/dep/a"
)

type B struct {
}

func (b B) PrintB() {
 fmt.Println(b)
}

func NewB() *B {
 b := new(B)
 return b
}

func RequireA() {
 o := a.NewA()
 o.PrintA()
}

就會(huì)在編譯時(shí)報(bào)錯(cuò):

import cycle not allowed
package github.com/mantishK/dep/a
  imports github.com/mantishK/dep/b
  imports github.com/mantishK/dep/a

現(xiàn)在的問(wèn)題就是:

A depends on B
B depends on A

那么如何避免?

引入package i, 引入interface

package i

type Aprinter interface {
 PrintA()
}

讓package b import package i

package b

import (
 "fmt"

 "github.com/mantishK/dep/i"
)


func RequireA(o i.Aprinter) {
 o.PrintA()
}

引入package c

package c

import (
 "github.com/mantishK/dep/a"
 "github.com/mantishK/dep/b"
)

func PrintC() {
 o := a.NewA()
 b.RequireA(o)
}

現(xiàn)在依賴關(guān)系如下:

A depends on B
B depends on I
C depends on A and B

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • 對(duì)Golang import 導(dǎo)入包語(yǔ)法詳解
  • go各種import的使用方法講解
  • golang 之import和package的使用
  • MongoDB使用mongoexport和mongoimport命令,批量導(dǎo)出和導(dǎo)入JSON數(shù)據(jù)到同一張表的實(shí)例
  • golang中import cycle not allowed解決的一種思路
  • Golang報(bào)“import cycle not allowed”錯(cuò)誤的2種解決方法
  • 如何解決django配置settings時(shí)遇到Could not import settings ''conf.local''
  • Golang import 導(dǎo)入包語(yǔ)法及一些特殊用法詳解

標(biāo)簽:貴州 德宏 保定 曲靖 許昌 吐魯番 東營(yíng) 常州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解golang避免循環(huán)import問(wèn)題(“import cycle not allowed”)》,本文關(guān)鍵詞  詳解,golang,避免,循環(huán),import,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解golang避免循環(huán)import問(wèn)題(“import cycle not allowed”)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解golang避免循環(huán)import問(wèn)題(“import cycle not allowed”)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    句容市| 全南县| 宣城市| 富蕴县| 香格里拉县| 公安县| 临海市| 司法| 田林县| 梧州市| 孟津县| 新竹县| 隆德县| 霍邱县| 碌曲县| 湖南省| 文山县| 怀柔区| 屏南县| 凤翔县| 涿鹿县| 阜城县| 江源县| 吴桥县| 明星| 邢台市| 太仆寺旗| 宜都市| 大名县| 武山县| 乌苏市| 酒泉市| 绵阳市| 庐江县| 农安县| 隆昌县| 建湖县| 邻水| 丰宁| 乐清市| 姜堰市|