最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年08月13日 11:15:07   作者:PHP點(diǎn)點(diǎn)通  
這篇文章主要給大家介紹了關(guān)于golang中不允許循環(huán)import問(wèn)題("import cycle not allowed")的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

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依賴(lài)package b,同事package b依賴(lài)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)在依賴(lài)關(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ì)腳本之家的支持。

相關(guān)文章

  • GO語(yǔ)言開(kāi)發(fā)終端命令行小工具改進(jìn)更新

    GO語(yǔ)言開(kāi)發(fā)終端命令行小工具改進(jìn)更新

    這篇文章主要為大家介紹了GO語(yǔ)言開(kāi)發(fā)終端命令行小工具的改進(jìn)更新,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Go中sync?包Cond使用場(chǎng)景分析

    Go中sync?包Cond使用場(chǎng)景分析

    Cond?是和某個(gè)條件相關(guān),在條件還沒(méi)有滿(mǎn)足的時(shí)候,所有等待這個(gè)條件的協(xié)程都會(huì)被阻塞住,只有這個(gè)條件滿(mǎn)足的時(shí)候,等待的協(xié)程才可能繼續(xù)進(jìn)行下去,這篇文章主要介紹了Go中sync?包的Cond使用場(chǎng)景分析,需要的朋友可以參考下
    2023-03-03
  • 在Go中使用JSON(附demo)

    在Go中使用JSON(附demo)

    Go開(kāi)發(fā)人員經(jīng)常需要處理JSON內(nèi)容,本文主要介紹了在Go中使用JSON,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 基于Go+OpenCV實(shí)現(xiàn)人臉識(shí)別功能的詳細(xì)示例

    基于Go+OpenCV實(shí)現(xiàn)人臉識(shí)別功能的詳細(xì)示例

    OpenCV是一個(gè)強(qiáng)大的計(jì)算機(jī)視覺(jué)庫(kù),提供了豐富的圖像處理和計(jì)算機(jī)視覺(jué)算法,本文將向你介紹在Mac上安裝OpenCV的步驟,并演示如何使用Go的OpenCV綁定庫(kù)進(jìn)行人臉識(shí)別,需要的朋友可以參考下
    2023-07-07
  • GoFrame實(shí)現(xiàn)順序性校驗(yàn)示例詳解

    GoFrame實(shí)現(xiàn)順序性校驗(yàn)示例詳解

    這篇文章主要為大家介紹了GoFrame實(shí)現(xiàn)順序性校驗(yàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 淺析Go語(yǔ)言中的超時(shí)控制

    淺析Go語(yǔ)言中的超時(shí)控制

    日常開(kāi)發(fā)中我們大概率會(huì)遇到超時(shí)控制的場(chǎng)景,而一個(gè)良好的超時(shí)控制可以有效的避免一些問(wèn)題,所以本文就來(lái)和大家深入探討一下Go語(yǔ)言中的超時(shí)控制吧
    2023-10-10
  • Go歸并排序算法的實(shí)現(xiàn)方法

    Go歸并排序算法的實(shí)現(xiàn)方法

    歸并排序采用的也是分治的策略,把原本的問(wèn)題先分解成一些小問(wèn)題進(jìn)行求解,再把這些小問(wèn)題各自的答案修整到一起得到原本問(wèn)題的答案,從而達(dá)到分而治之的目的,對(duì)Go歸并排序算法相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-04-04
  • golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)

    golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)

    這篇文章主要介紹了golang gorm 計(jì)算字段和獲取sum()值的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Golang實(shí)現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的示例詳解

    Golang實(shí)現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Golang實(shí)現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的方法,文中的示例代碼講解詳細(xì),對(duì)學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的可以參考一下
    2023-02-02
  • golang?select?機(jī)制和超時(shí)問(wèn)題

    golang?select?機(jī)制和超時(shí)問(wèn)題

    golang 中的協(xié)程使用非常方便,但是協(xié)程什么時(shí)候結(jié)束是一個(gè)控制問(wèn)題,可以用 select 配合使用,這篇文章主要介紹了golang?select?機(jī)制和超時(shí)問(wèn)題,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

苏尼特右旗| 华池县| 瑞昌市| 龙川县| 兴城市| 叙永县| 高州市| 炉霍县| 济源市| 龙游县| 南漳县| 武夷山市| 东兴市| 邛崃市| 芜湖县| 苗栗市| 金平| 蒲江县| 扎兰屯市| 满洲里市| 江孜县| 闵行区| 永昌县| 三明市| 宕昌县| 乌拉特后旗| 高阳县| 汝州市| 石家庄市| 中山市| 手游| 基隆市| 长宁县| 张家港市| 山丹县| 红安县| 临漳县| 璧山县| 临汾市| 射阳县| 临洮县|