亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語(yǔ)言遍歷目錄的三種方法舉例

 更新時(shí)間:2023年11月22日 11:21:09   作者:Commas.KM  
學(xué)習(xí)io之后,尤其是文件操作,我們就可以遍歷給定的目錄了,這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言遍歷目錄的三種方法,分別是ioutil.ReadDir、filepath.Walk以及filepath.Glob,需要的朋友可以參考下

一、寫在前面

中文名英文名說(shuō)明
目錄directory一系列文件和文件夾的集合
文件夾folder用來(lái)存放文件和文件夾的容器
文件file用來(lái)存儲(chǔ)信息的單個(gè)數(shù)據(jù)單元(文本、圖像、聲音等等)
路徑path用于定位文件的路徑

我們用命令行 tree /? 和 tree /F 來(lái)查詢樹(shù)形目錄,如下所示:

D:\Go_WorkSpace\p3-traversal>tree /?
以圖形顯示驅(qū)動(dòng)器或路徑的文件夾結(jié)構(gòu)。

TREE [drive:][path] [/F] [/A]

   /F   顯示每個(gè)文件夾中文件的名稱。
   /A   使用 ASCII 字符,而不使用擴(kuò)展字符。

D:\Go_WorkSpace\p3-traversal>tree /F
文件夾 PATH 列表
卷序列號(hào)為 277B-1704
D:.
│  go.mod
│  main_filepath_glob.go
│  main_filepath_walk.go
│  main_ioutil_ReadDir.go

└─父目錄
    │  1.txt
    │
    └─子目錄
        │  21.txt
        │  22.txt
        │  23.txt
        │
        └─孫目錄
                31.txt
                32.txt

二、使用 ioutil.ReadDir

  • 此方法讀取目錄的內(nèi)容,并返回目錄中每個(gè)文件或目錄的 fs.FileInfo 對(duì)象切片;
  • 可以使用 for 循環(huán)遍歷切片并打印出每個(gè)文件或目錄的名稱;

示例如下:

package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    files, err := ioutil.ReadDir(".")
    if err != nil {
        log.Fatal(err)
    }
    for _, file := range files {
        fmt.Println(file.Name())
    }
}

結(jié)果輸出:

D:\Go_WorkSpace\p3-traversal>go run main_ioutil_ReadDir.go
go.mod
main_filepath_glob.go
main_filepath_walk.go
main_ioutil_ReadDir.go
父目錄

分析說(shuō)明:

1、僅打印當(dāng)前目錄,不含子孫目錄;
2、不會(huì)打印出...等特殊的目錄;

三、使用 filepath.Walk

  • 此方法遍歷根位于指定目錄的文件樹(shù)(a file tree),并為遇到的每個(gè)文件或目錄調(diào)用函數(shù);
  • 可以使用匿名函數(shù)(an anonymous function)打印出每個(gè)文件或目錄的名稱
    示例如下:
package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
        fmt.Println(path)
        return nil
    })
    if err != nil {
        fmt.Println(err)
    }
}

結(jié)果輸出:

D:\Go_WorkSpace\p3-traversal>go run main_filepath_walk.go
.
go.mod
main_filepath_glob.go
main_filepath_walk.go
main_ioutil_ReadDir.go
父目錄
父目錄\1.txt
父目錄\子目錄
父目錄\子目錄\21.txt
父目錄\子目錄\22.txt
父目錄\子目錄\23.txt
父目錄\子目錄\孫目錄
父目錄\子目錄\孫目錄\31.txt
父目錄\子目錄\孫目錄\32.txt

分析說(shuō)明:

1、打印當(dāng)前目錄,含子孫目錄;
2、包含.等特殊的目錄,遍歷時(shí)需要排除;

四、使用 filepath.Glob

  • 此方法返回與指定模式匹配的文件名列表;
  • 可以使用通配符(*)來(lái)匹配當(dāng)前目錄中的所有文件

示例如下:

package main

import (
    "fmt"
    "log"
    "os"
    "path/filepath"
)

func main() {
    pwd, _ := os.Getwd()
    filePaths, err := filepath.Glob(filepath.Join(pwd, "*"))
    if err != nil {
        log.Fatal(err)
    }
    for _, filePath := range filePaths {
        fmt.Println(filePath)
    }
}

結(jié)果輸出:

D:\Go_WorkSpace\p3-traversal>go run main_filepath_glob.go
D:\Go_WorkSpace\p3-traversal\go.mod
D:\Go_WorkSpace\p3-traversal\main_filepath_glob.go
D:\Go_WorkSpace\p3-traversal\main_filepath_walk.go
D:\Go_WorkSpace\p3-traversal\main_ioutil_ReadDir.go
D:\Go_WorkSpace\p3-traversal\父目錄

分析說(shuō)明:

1、僅打印當(dāng)前目錄,不含子孫目錄;
2、不會(huì)打印出...等特殊的目錄;
3、返回的是絕對(duì)路徑;

總結(jié) 

到此這篇關(guān)于Go語(yǔ)言遍歷目錄的三種方法的文章就介紹到這了,更多相關(guān)Go遍歷目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go處理包含多種引號(hào)的字符串的幾種方法

    Go處理包含多種引號(hào)的字符串的幾種方法

    在Go中,有幾種方式可以處理包含多種引號(hào)的字符串,以確保代碼的可讀性和正確性,本文將給大家詳細(xì)介紹了這幾種處理方式,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Go 標(biāo)準(zhǔn)庫(kù)增加metrics指標(biāo)探討分析

    Go 標(biāo)準(zhǔn)庫(kù)增加metrics指標(biāo)探討分析

    go中有一個(gè)神奇的標(biāo)準(zhǔn)庫(kù) runtime/metrics,提供了一系列預(yù)定義好的 Go 自身的相關(guān)指標(biāo),如果沒(méi)有編寫過(guò)基礎(chǔ)監(jiān)控庫(kù)或者關(guān)注的比較少的朋友可能會(huì)沒(méi)接觸到這類指標(biāo),本文展開(kāi)現(xiàn)有metrics 指標(biāo),并結(jié)合現(xiàn)有的社區(qū)討論一起看看還有沒(méi)有必要增加更多的標(biāo)準(zhǔn)庫(kù)指標(biāo)
    2023-10-10
  • golang不到30行代碼實(shí)現(xiàn)依賴注入的方法

    golang不到30行代碼實(shí)現(xiàn)依賴注入的方法

    這篇文章主要介紹了golang不到30行代碼實(shí)現(xiàn)依賴注入的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Golang使用zlib壓縮和解壓縮字符串

    Golang使用zlib壓縮和解壓縮字符串

    本文給大家分享的是Golang使用zlib壓縮和解壓縮字符串的方法和示例,有需要的小伙伴可以參考下
    2017-02-02
  • Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng))

    Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng))

    有時(shí)候需要自己寫一個(gè)包方便多次使用,但是在導(dǎo)入自己寫的包時(shí)遇到了問(wèn)題,本文主要介紹了Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng)),感興趣的可以了解一下
    2023-11-11
  • go?map搬遷的實(shí)現(xiàn)

    go?map搬遷的實(shí)現(xiàn)

    本文主要介紹了go?map搬遷的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • go實(shí)現(xiàn)一個(gè)分布式限流器的方法步驟

    go實(shí)現(xiàn)一個(gè)分布式限流器的方法步驟

    項(xiàng)目中需要對(duì)api的接口進(jìn)行限流,本文主要介紹了go實(shí)現(xiàn)一個(gè)分布式限流器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Golang Map類型的使用(增刪查改)

    Golang Map類型的使用(增刪查改)

    在Go中,map是哈希表的引用,是一種key-value數(shù)據(jù)結(jié)構(gòu),本文主要介紹了Golang Map類型的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 深入理解golang的異常處理機(jī)制

    深入理解golang的異常處理機(jī)制

    Go語(yǔ)言追求簡(jiǎn)潔優(yōu)雅,所以,Go語(yǔ)言不支持傳統(tǒng)的 try…catch…finally 這種異常,下面這篇文章主要給大家介紹了關(guān)于golang的異常處理機(jī)制,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • Hugo?Config模塊構(gòu)建實(shí)現(xiàn)源碼剖析

    Hugo?Config模塊構(gòu)建實(shí)現(xiàn)源碼剖析

    這篇文章主要為大家介紹了Hugo?Config模塊構(gòu)建實(shí)現(xiàn)源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論