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

Go語言遍歷目錄的三種方法舉例

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

一、寫在前面

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

我們用命令行 tree /? 和 tree /F 來查詢樹形目錄,如下所示:

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

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

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

D:\Go_WorkSpace\p3-traversal>tree /F
文件夾 PATH 列表
卷序列號為 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)容,并返回目錄中每個文件或目錄的 fs.FileInfo 對象切片;
  • 可以使用 for 循環(huán)遍歷切片并打印出每個文件或目錄的名稱;

示例如下:

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
父目錄

分析說明:

1、僅打印當前目錄,不含子孫目錄;
2、不會打印出...等特殊的目錄;

三、使用 filepath.Walk

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

分析說明:

1、打印當前目錄,含子孫目錄;
2、包含.等特殊的目錄,遍歷時需要排除;

四、使用 filepath.Glob

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

示例如下:

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\父目錄

分析說明:

1、僅打印當前目錄,不含子孫目錄;
2、不會打印出...等特殊的目錄;
3、返回的是絕對路徑;

總結(jié) 

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

相關(guān)文章

  • Go語言中內(nèi)存管理逃逸分析詳解

    Go語言中內(nèi)存管理逃逸分析詳解

    所謂的逃逸分析(Escape?analysis)是指由編譯器決定內(nèi)存分配的位置嗎不需要程序員指定。本文就來和大家簡單分析一下Go語言中內(nèi)存管理逃逸吧
    2023-03-03
  • 解決Goland 提示 Unresolved reference 錯誤的問題

    解決Goland 提示 Unresolved reference 錯誤的問題

    這篇文章主要介紹了解決Goland 提示 Unresolved reference 錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 詳解Golang編程中的常量與變量

    詳解Golang編程中的常量與變量

    這篇文章主要介紹了詳解Golang編程中的常量與變量,是Go語言入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • 淺談Golang的方法傳遞值應(yīng)該注意的地方

    淺談Golang的方法傳遞值應(yīng)該注意的地方

    這篇文章主要介紹了淺談Golang的方法傳遞值應(yīng)該注意的地方,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go語言中slice,map,channl底層原理

    go語言中slice,map,channl底層原理

    這篇文章主要介紹了go語言中slice,map,channl底層原理,slice,map,channl是我們Go語言中最最常用的幾個數(shù)據(jù)結(jié)構(gòu),對于其更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章詳細內(nèi)容
    2022-06-06
  • Go語言中字符串與字節(jié)切片轉(zhuǎn)換的詳細過程

    Go語言中字符串與字節(jié)切片轉(zhuǎn)換的詳細過程

    在Go語中,字符串(string)和字節(jié)切片([]byte)是處理文本和二進制數(shù)據(jù)的重要類型,理解它們的轉(zhuǎn)換機制及底層表示形式,是編寫高效代碼的關(guān)鍵,本文將深入探討字符串與字節(jié)切片的轉(zhuǎn)換過程,并通過示例和流程圖幫助讀者掌握其核心原理,需要的朋友可以參考下
    2025-05-05
  • 從前端轉(zhuǎn)go的一些感悟?qū)Ρ?附詳細代碼)

    從前端轉(zhuǎn)go的一些感悟?qū)Ρ?附詳細代碼)

    從前端開發(fā)轉(zhuǎn)向 Go(Golang)后端開發(fā),是一個非??尚幸埠軐嵱玫姆较?特別是在做高性能微服務(wù)、分布式系統(tǒng)、云原生(如Kubernetes)等方面,這篇文章主要介紹了從前端轉(zhuǎn)go的一些感悟?qū)Ρ?需要的朋友可以參考下
    2026-04-04
  • golang簡單位運算示例

    golang簡單位運算示例

    這篇文章主要介紹了golang簡單位運算,包括位移運算、取反及位與位或等運算,需要的朋友可以參考下
    2016-07-07
  • Golang切片刪除指定元素的三種方法對比

    Golang切片刪除指定元素的三種方法對比

    Go語言并沒有提供用于刪除元素的語法或接口,而是通過利用切片本身的特性來刪除元素—追加元素,這篇文章主要給大家介紹了關(guān)于Golang切片刪除指定元素的三種方法,需要的朋友可以參考下
    2022-06-06
  • Golang跳轉(zhuǎn)語句continue與goto使用語法詳解

    Golang跳轉(zhuǎn)語句continue與goto使用語法詳解

    這篇文章主要介紹了Golang跳轉(zhuǎn)語句continue與goto使用語法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01

最新評論

平山县| 茂名市| 通化市| 临武县| 遵义县| 灌云县| 苗栗市| 无棣县| 道真| 青冈县| 凌源市| 金堂县| 长泰县| 石家庄市| 葵青区| 滨州市| 池州市| 庆城县| 遵化市| 根河市| 二连浩特市| 武安市| 镇江市| 阳西县| 怀来县| 杂多县| 青龙| 石泉县| 定南县| 鄂伦春自治旗| 安国市| 岐山县| 赤壁市| 邯郸市| 马鞍山市| 嘉善县| 广灵县| 达州市| 奉节县| 武功县| 彰化县|