国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Golang - 為什么GO不支持循環(huán)引用

為什么GO不支持循環(huán)引用

2021-11-25 12:12煎魚(yú) Golang

這篇文章主要介紹的是為什么GO不支持循環(huán)引用,學(xué)習(xí) Go 語(yǔ)言的開(kāi)發(fā)者越來(lái)越多了,很多小伙伴在使用時(shí),就會(huì)遇到種種不理解的問(wèn)題,其中一點(diǎn)就是包的循環(huán)引用的報(bào)錯(cuò),下main文章我們一起來(lái)看看學(xué)習(xí)原因

學(xué)習(xí) Go 語(yǔ)言的開(kāi)發(fā)者越來(lái)越多了,很多小伙伴在使用時(shí),就會(huì)遇到種種不理解的問(wèn)題。

其中一點(diǎn)就是包的循環(huán)引用的報(bào)錯(cuò):

?
1
2
3
4
package command-line-arguments
 imports github.com/eddycjy/awesome-project/a
 imports github.com/eddycjy/awesome-project/b
 imports github.com/eddycjy/awesome-project/a: import cycle not allowed

一下子就很懵逼了,為什么 Go 不支持包之間的循環(huán)引用呢,這就很不解了,難道還影響性能了?

如下圖:

為什么GO不支持循環(huán)引用

今天煎魚(yú)將和大家一起了解背后的原因。

1、案例演示

這里我們做一個(gè)基本的案例 Demo,便于沒(méi)接觸過(guò)的同學(xué)建立初步認(rèn)知。我們的程序分別有 2 個(gè) package

package a 的代碼如下:

?
1
2
3
4
5
6
7
import (
 "github.com/eddycjy/awesome-project/b"
)
 
func Hello(s string) {
 b.Print(s)
}

package b 的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
import (
 "fmt"
 
 "github.com/eddycjy/awesome-project/a"
)
 
func Hello() {
 a.Hello("腦子進(jìn)煎魚(yú)了")
}
 
func Print(s string) {
 fmt.Println(s)
}

再在 main.go 的文件中調(diào)用 a.Hello("腦子進(jìn)煎魚(yú)了") 方法。

一運(yùn)行,就會(huì)出現(xiàn)如下錯(cuò)誤提示:

package command-line-arguments
 imports github.com/eddycjy/awesome-project/a
 imports github.com/eddycjy/awesome-project/b
 imports github.com/eddycjy/awesome-project/a: import cycle not allowed

錯(cuò)誤的本質(zhì)原因是 package a 引用了 package b,而 package b 又引用了 package a,造成了循環(huán)引用。

這在 Go 語(yǔ)言中是明令禁止的,在編譯時(shí)就會(huì)中斷程序,導(dǎo)致編譯失敗。

2、原因分析

根據(jù)現(xiàn)在 Go 官方的統(tǒng)一意見(jiàn)來(lái)看,package 循環(huán)導(dǎo)入幾乎不可能出現(xiàn),即使是 Go2,也被明確拒絕了。

因?yàn)?Go2 可能是很多核心問(wèn)題的破變的關(guān)鍵節(jié)點(diǎn),有許多人提了類(lèi)似《proposal: Go 2: allow import cycle》的提案,希望解決循環(huán)引入的問(wèn)題。

Go 語(yǔ)言之父 Rob Pike 親自回答了這個(gè)問(wèn)題,原因如下:

沒(méi)有支持循環(huán)引用:目的是迫使 Go 程序員更多地考慮程序的依賴(lài)關(guān)系。

  • 保持依賴(lài)關(guān)系圖的簡(jiǎn)潔。
  • 快速的程序構(gòu)建。

如果支持循環(huán)引用:很容易會(huì)造成懶惰、不良的依賴(lài)性管理和緩慢的構(gòu)建。這是設(shè)計(jì)者不希望看見(jiàn)的。

  • 混亂的依賴(lài)關(guān)系。
  • 緩慢的程序構(gòu)建

因此考慮一開(kāi)始就保持依賴(lài)圖的正確 DAGRob Pike 認(rèn)為這是一個(gè)值得預(yù)先簡(jiǎn)化的領(lǐng)域。

在 Go 程序中去做導(dǎo)入循環(huán)這件事可能很方便,但背后的代價(jià)可能是災(zāi)難性的,會(huì)對(duì) Go 的構(gòu)建性能和依賴(lài)關(guān)系造成非常不利的影響。

所以在 Go 中被明確禁止支持。

3、總結(jié)

在程序中,如果我們頻繁的出現(xiàn)模塊與模塊之間的循環(huán)引用,這時(shí)候我們是不是應(yīng)該考慮一下,是不是設(shè)計(jì)的有些問(wèn)題,要不要考慮調(diào)整?

但也并非所有的事都是二極管,Go 源碼可能或多或少都有自己循環(huán)引用的案例,最重要的是想清楚。

到此這篇關(guān)于為什么GO不支持循環(huán)引用的文章就介紹到這了,更多相關(guān)GO不支持循環(huán)引用內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.tuicool.com/articles/eeYF3um

延伸 · 閱讀

精彩推薦
  • Golanggolang 通過(guò)ssh代理連接mysql的操作

    golang 通過(guò)ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過(guò)ssh代理連接mysql的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    a165861639710342021-03-08
  • Golanggo語(yǔ)言制作端口掃描器

    go語(yǔ)言制作端口掃描器

    本文給大家分享的是使用go語(yǔ)言編寫(xiě)的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang通脈之?dāng)?shù)據(jù)類(lèi)型詳情

    Golang通脈之?dāng)?shù)據(jù)類(lèi)型詳情

    這篇文章主要介紹了Golang通脈之?dāng)?shù)據(jù)類(lèi)型,在編程語(yǔ)言中標(biāo)識(shí)符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語(yǔ)言中標(biāo)識(shí)符允許由...

    4272021-11-24
  • Golanggolang如何使用struct的tag屬性的詳細(xì)介紹

    golang如何使用struct的tag屬性的詳細(xì)介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細(xì)介紹,從例子說(shuō)起,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看...

    Go語(yǔ)言中文網(wǎng)11352020-05-21
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    helight2992020-05-14
  • Golanggo日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    go日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang中Bit數(shù)組的實(shí)現(xiàn)方式

    Golang中Bit數(shù)組的實(shí)現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    天易獨(dú)尊11682021-06-09
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲视频在线视频 | 亚洲国产aⅴ精品一区二区 少妇一级片免费看 | 免费观看aaa | 日韩av一区二区在线观看 | 成人伊人网 | 欧美高清成人 | 99色综合| 精品欧美 | 精品成人 | 日韩欧美综合 | 精品国产一区二区 | 久色| 精品超碰 | 欧美在线小视频 | 视频三区 | 一二三区字幕免费观看av | 亚洲毛片在线观看 | 澳门黄色网 | 日韩国产 | 亚洲欧洲视频 | 黄色免费网站在线观看 | 亚洲精品久久久久久下一站 | 性激烈欧美三级在线播放狩猎 | 羞羞网| 亚洲男人第一天堂 | 爱爱视频网站 | 精品久久一区二区三区 | 激情婷婷| 日韩免费一区 | 欧美日韩一区二区三区视频 | 一级片在线播放 | 欧美自拍一区 | 日韩视频在线观看 | 国产综合网站 | 亚洲欧美激情精品一区二区 | 中文字幕日韩欧美 | 久久久久久9 | 精品一区二区三区在线观看 | 超碰在线观看97 | 午夜影院在线观看 | 亚洲男人天堂网 |