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

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

go語言管道遍歷,go 遍歷目錄

Go語言list(列表)

2021-11-10

臨漳網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

列表是一種非連續(xù)的存儲容器,有多個(gè)節(jié)點(diǎn)組成,節(jié)點(diǎn)通過一些變量記錄彼此之間的關(guān)系

單鏈表和雙鏈表就是列表的兩種方法。

原理:A、B、C三個(gè)人,B懂A的電話,C懂B的電話只是單方知道號碼,這樣就形成了一個(gè)單鏈表結(jié)構(gòu)。

如果C把自己的號碼給B,B把自己的號碼給A,因?yàn)槭请p方都知道對方的號碼,這樣就形成了一個(gè)雙鏈表結(jié)構(gòu)

如果B換號碼了,他需要通知AC,把自己的號碼刪了,這個(gè)過程就是列表的刪除操作。

在Go語言中,列表使用 container/list 包來實(shí)現(xiàn),內(nèi)部的實(shí)現(xiàn)原理是雙鏈表,列表能夠高效地進(jìn)行任意位置的元素插入和刪除操作。

列表初始化的兩種辦法

列表沒有給出具體的元素類型的限制,所以列表的元素可以是任意類型的,

例如給列表中放入了一個(gè) interface{} 類型的值,取出值后,如果要將 interface{} 轉(zhuǎn)換為其他類型將會(huì)發(fā)生宕機(jī)。

雙鏈表支持從隊(duì)列前方或后方插入元素,分別對應(yīng)的方法是 PushFront 和 PushBack。

列表插入函數(shù)的返回值會(huì)提供一個(gè) *list.Element 結(jié)構(gòu),這個(gè)結(jié)構(gòu)記錄著列表元素的值以及與其他節(jié)點(diǎn)之間的關(guān)系等信息,從列表中刪除元素時(shí),需要用到這個(gè)結(jié)構(gòu)進(jìn)行快速刪除。

遍歷完也能看到最后的結(jié)果

學(xué)習(xí)地址:

GO語言(二十七):管理依賴項(xiàng)(下)-

當(dāng)您對外部模塊的存儲庫進(jìn)行了 fork (例如修復(fù)模塊代碼中的問題或添加功能)時(shí),您可以讓 Go 工具將您的 fork 用于模塊的源代碼。這對于測試您自己的代碼的更改很有用。

為此,您可以使用go.mod 文件中的replace指令將外部模塊的原始模塊路徑替換為存儲庫中 fork 的路徑。這指示 Go 工具在編譯時(shí)使用替換路徑(fork 的位置),例如,同時(shí)允許您保留import 原始模塊路徑中的語句不變。

在以下 go.mod 文件示例中,當(dāng)前模塊需要外部模塊example.com/theirmodule。然后該replace指令將原始模塊路徑替換為example.com/myfork/theirmodule模塊自己的存儲庫的分支。

設(shè)置require/replace對時(shí),使用 Go 工具命令確保文件描述的需求保持一致。使用go list命令獲取當(dāng)前模塊正在使用的版本。然后使用go mod edit命令將需要的模塊替換為fork:

注意: 當(dāng)您使用該replace指令時(shí),Go 工具不會(huì)像添加依賴項(xiàng)中所述對外部模塊進(jìn)行身份驗(yàn)證。

您可以使用go get命令從其存儲庫中的特定提交為模塊添加未發(fā)布的代碼。

為此,您使用go get命令,用符號@指定您想要的代碼 。當(dāng)您使用go get時(shí),該命令將向您的 go.mod 文件添加一個(gè) 需要外部模塊的require指令,使用基于有關(guān)提交的詳細(xì)信息的偽版本號。

以下示例提供了一些說明。這些基于源位于 git 存儲庫中的模塊。

當(dāng)您的代碼不再使用模塊中的任何包時(shí),您可以停止將該模塊作為依賴項(xiàng)進(jìn)行跟蹤。

要停止跟蹤所有未使用的模塊,請運(yùn)行g(shù)o mod tidy 命令。此命令還可能添加在模塊中構(gòu)建包所需的缺失依賴項(xiàng)。

要?jiǎng)h除特定依賴項(xiàng),請使用go get,指定模塊的模塊路徑并附加 @none,如下例所示:

go get命令還將降級或刪除依賴于已刪除模塊的其他依賴項(xiàng)。

當(dāng)您使用 Go 工具處理模塊時(shí),這些工具默認(rèn)從 proxy.golang.org(一個(gè)公共的 Google 運(yùn)行的模塊鏡像)或直接從模塊的存儲庫下載模塊。您可以指定 Go 工具應(yīng)該使用另一個(gè)代理服務(wù)器來下載和驗(yàn)證模塊。

如果您(或您的團(tuán)隊(duì))已經(jīng)設(shè)置或選擇了您想要使用的不同模塊代理服務(wù)器,您可能想要這樣做。例如,有些人設(shè)置了模塊代理服務(wù)器,以便更好地控制依賴項(xiàng)的使用方式。

要為 Go 工具指定另一個(gè)模塊代理服務(wù)器,請將GOPROXY 環(huán)境變量設(shè)置為一個(gè)或多個(gè)服務(wù)器的 URL。Go 工具將按照您指定的順序嘗試每個(gè) URL。默認(rèn)情況下,GOPROXY首先指定一個(gè)公共的 Google 運(yùn)行模塊代理,然后從模塊的存儲庫直接下載(在其模塊路徑中指定):

您可以將變量設(shè)置為其他模塊代理服務(wù)器的 URL,用逗號或管道分隔 URL。

Go 模塊經(jīng)常在公共互聯(lián)網(wǎng)上不可用的版本控制服務(wù)器和模塊代理上開發(fā)和分發(fā)。您可以設(shè)置 GOPRIVATE環(huán)境變量。您可以設(shè)置GOPRIVATE環(huán)境變量來配置go命令以從私有源下載和構(gòu)建模塊。然后 go 命令可以從私有源下載和構(gòu)建模塊。

GOPRIVATE或環(huán)境變量可以設(shè)置為匹配模塊前綴的全局模式列表,這些GONOPROXY前綴是私有的,不應(yīng)從任何代理請求。例如:

go語言遞歸掃描指定目錄下文件

使用go語言遞歸查找指定目錄下的文件,根據(jù)正則匹配篩選出需要的文件,并且忽略指定的目錄

先使用 ioutil.ReadDir 遍歷出指定目錄下的文件,再遞歸進(jìn)目錄中遍歷,問題的關(guān)鍵在于識別出文件為目錄, fs.FileInfo 中有一個(gè) IsDir() 函數(shù)可以識別是否是目錄

正則匹配使用 regexp.MatchString ,regexp中有很多正則操作的工具,如根據(jù)正則替換字符串中的指定字符

Go中字符串的遍歷

首先說一下go中的字符串類型:

字符串就是一串固定長度的字符連接起來的字符序列。Go的字符串是由單個(gè)字節(jié)連接起來的。Go語言的字符串的字節(jié)使用UTF-8編碼標(biāo)識Unicode文本。

下面介紹字符串的三種遍歷方式,根據(jù)實(shí)際情況選擇即可。

該遍歷方式==缺點(diǎn)==:遍歷是按照字節(jié)遍歷,因此如果有中文等非英文字符,就會(huì)出現(xiàn)亂碼,比如要遍歷"abc北京"這個(gè)字符串,效果如下:

可見這不是我們想要的效果,根據(jù)utf-8中文編碼規(guī)則,我們要str[3]str[4]str[5]三個(gè)字節(jié)合起來組成“北”字及 str[6]str[7]str[8]合起來組成“京”字。由此引出下面第二種遍歷方法。

該方式是按照字符遍歷的,所以不會(huì)出現(xiàn)亂碼,如下:

運(yùn)行結(jié)果:

從圖中可以看到第二個(gè)漢子“京”的開始下標(biāo)是6,直接跳過了4和5,可見確實(shí)依照utf8編碼方式將三個(gè)字節(jié)組合成了一個(gè)漢字,str[3]-str[5]組合成“北”字,str[6]-str[8]組合成了“京”字。

由于下標(biāo)的不確定性,所以引出了下面的遍歷方式。

1 可以先將字符串轉(zhuǎn)成 []rune 切片

2 再用常規(guī)方法進(jìn)行遍歷

運(yùn)行效果:

由此可見下標(biāo)是按1遞增的,沒有產(chǎn)生跳躍現(xiàn)象。

go語言 使用遞歸與循環(huán)兩種方式計(jì)算斐波那契數(shù)列

給定一個(gè)正整數(shù)n計(jì)算出對應(yīng)斐波那契數(shù)列對應(yīng)的值

說明:

用mackbookpro i7 2.7GHZ筆記本進(jìn)行測試,結(jié)果如下:

備注: 當(dāng)n=80時(shí),由于測試等待時(shí)間過長,強(qiáng)制中斷了執(zhí)行。

從測試結(jié)果看出,當(dāng)n逐漸增大,遞歸方式計(jì)算斐波拉契數(shù)列的時(shí)間復(fù)雜性急劇增加。當(dāng)n值較大時(shí)可以考慮用循環(huán)方式代替。

類似的方式也可以用于,求階乘、遍歷目錄、漢諾塔等問題的解決。在后期的文章中,我將這些內(nèi)容進(jìn)行補(bǔ)充,敬請期待,謝謝。


當(dāng)前題目:go語言管道遍歷,go 遍歷目錄
文章轉(zhuǎn)載:http://weahome.cn/article/hdppgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部