真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解golang避免循環(huán)import問題(“importcyclenotallowed”)

前言

創(chuàng)新互聯(lián)建站成都網(wǎng)站建設(shè)按需求定制設(shè)計,是成都營銷推廣公司,為石涼亭提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站營銷推廣熱線:18982081108

golang不允許循環(huán)import package ,如果檢測到 import cycle ,會在編譯時報錯,通常import cycle是因為設(shè)計錯誤或包的規(guī)劃問題。

以下面的例子為例,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()
}

就會在編譯時報錯:

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

現(xià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é)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。


文章題目:詳解golang避免循環(huán)import問題(“importcyclenotallowed”)
路徑分享:http://weahome.cn/article/pggiij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部