日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

手把手教你用Go語言開發一款簡易目錄生成器

來源: 責編: 時間:2024-01-08 09:15:56 208觀看
導讀前言有時候,我看著我的目錄,或者我想找個文件時,尤其是目錄很多時,總是有點難受。比如這個目錄,是我的一個教程目錄。但是我并不能一目了然的知道每個文件夾下都有啥,并且每次找一個文件也很費事。所以,基于上述的需

前言

時候,我看著我的目錄,或者我想找個文件時,尤其是目錄很多時,總是有點難受。4Wm28資訊網——每日最新資訊28at.com

4Wm28資訊網——每日最新資訊28at.com

比如這個目錄,是我的一個教程目錄。4Wm28資訊網——每日最新資訊28at.com

但是我并不能一目了然的知道每個文件夾下都有啥,并且每次找一個文件也很費事。4Wm28資訊網——每日最新資訊28at.com

所以,基于上述的需求,使用Go語言,終于擼了個目錄生成器,感覺還行。4Wm28資訊網——每日最新資訊28at.com

實現的效果

4Wm28資訊網——每日最新資訊28at.com

通過編寫的腳本,可以將目錄整合成.txt文件,并且下級目錄使用4個空格縮進。4Wm28資訊網——每日最新資訊28at.com

代碼

先別管怎么實現的,先看代碼。4Wm28資訊網——每日最新資訊28at.com

package mainimport (    "bytes"    "flag"    "fmt"    "io/ioutil"    "os"    "path/filepath")func GenderNSymbol(char byte, count int) string {    symbolSince := bytes.Repeat([]byte{char}, count)    var symbol = string(symbolSince)    return symbol}// @title    GenderDirTree// @description   生成目錄樹// @param     path        string         "需要生成的目錄"http:// @param     count        int           "生成相同字符的個數"http:// @param     char        byte           "生成相同字符的字符"http:// @param     current_tier        int            "當前層數"http:// @param     end_tier        int            "終止層數"http:// @param     fileObj        int            "文件對象"http:// @return    無        無         "無"func GenderDirTree(path string, count int, char byte, current_tier int, end_tier int, fileObj *os.File) {    if !(current_tier < end_tier) && end_tier != 0 {        return}    current_tier++    files, err := ioutil.ReadDir(path)    if err != nil {        fmt.Println("錯誤:目錄錯誤")        return}    for _, file := range files {        var name = file.Name()        //生成指定數目的相同符號        var plac = GenderNSymbol(char, count)        //符號+目錄        var sname = fmt.Sprintf("%s%s/n", plac, name)        //輸出當前目錄        fileObj.WriteString(sname)        //fmt.Println(sname)        //判斷是否為目錄,如果是,繼續下次遞歸        var isDir = file.IsDir()        if isDir {            //拼接傳入的目錄和循環的當前目錄            var nerPaht = filepath.Join(path, name)            GenderDirTree(nerPaht, count+4, char, current_tier, end_tier, fileObj)        }}}func main() {    //終止層數,0表示無限層,>0表示指定層數    var end_tier int    //輸入的目錄    //var path = `D:/0_教程/易錦教程`    var path string    flag.StringVar(&path, "path", "", "目錄")    flag.IntVar(&end_tier, "tier", 0, "終止層數")    flag.Parse()    //文件對象    var wDirPath = filepath.Join(path, "目錄.txt")    fileObj, _ := os.OpenFile(wDirPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)    defer fileObj.Close()    //生成目錄樹    GenderDirTree(path, 0, ' ', 0, end_tier, fileObj)}

去掉注釋,其實也就30行代碼,就實現了這個功能。4Wm28資訊網——每日最新資訊28at.com

實現的功能

  • 自定義要生成的目錄。
  • 自定義生成目錄終止的層數。

打包

go build main.go

-help

用flag包動態控制參數,參數如下。4Wm28資訊網——每日最新資訊28at.com

d:>main.exe -hUsage of main.exe:  -path string        目錄  -tier int        終止層數

運行

語法

main.exe -path <要生成的目錄> -tier <終止層級>注意:-tier,終止層數,0表示無限層,>0表示指定層數,默認為0

示例

此處-tier指定的是0,表示無限制生成,如果指定是1,就表示生成一層。4Wm28資訊網——每日最新資訊28at.com

4Wm28資訊網——每日最新資訊28at.com

結果

會在要生成的目錄下,多出一個目錄.txt。4Wm28資訊網——每日最新資訊28at.com

4Wm28資訊網——每日最新資訊28at.com

打開如下

4Wm28資訊網——每日最新資訊28at.com

主要代碼理解

flag

4Wm28資訊網——每日最新資訊28at.com

fileObj

4Wm28資訊網——每日最新資訊28at.com

判斷是否為目錄,遞歸

4Wm28資訊網——每日最新資訊28at.com

總結

本次更像是日常使用中,為了解決實際問題的腳本,其實腳本使用Python更好。4Wm28資訊網——每日最新資訊28at.com

但是Go有一個更大的優勢就是可以編譯為exe。4Wm28資訊網——每日最新資訊28at.com

這次的難點主要是理解遞歸,自己調自己!4Wm28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-57881-0.html手把手教你用Go語言開發一款簡易目錄生成器

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 掌握Python之道:正確學習官方文檔的有效方法

下一篇: 在 Rust 編程中使用多線程

標簽:
  • 熱門焦點
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業務來說可快速實現自動化的上手工作。Selenium IDEKat
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數或類的行為。裝飾器本質上是一個函數,它接受另一個函數或類作為參數,并返回一個新的函數或類。它們通常用
  • 自動化在DevOps中的力量:簡化軟件開發和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團隊可以實現以下目標:消除手動和重復性任務。簡化流程。在整個軟件開發生命周期中實現更
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的&ldquo;新電商三兄弟&rdquo;成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業務到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,iQOO 11不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競屏,同時在快充
Top 主站蜘蛛池模板: 宜兰市| 资溪县| 宣汉县| 甘孜县| 阳谷县| 民丰县| 雅江县| 宁津县| 西林县| 阿拉善盟| 旬阳县| 正蓝旗| 佛学| 长白| 准格尔旗| 内乡县| 宜兰市| 莎车县| 哈尔滨市| 涟源市| 千阳县| 德江县| 陈巴尔虎旗| 永平县| 秦安县| 怀宁县| 应城市| 顺义区| 南岸区| 金昌市| 临汾市| 海伦市| 明光市| 磴口县| 大城县| 石景山区| 大邑县| 广灵县| 察哈| 崇州市| 固原市|