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

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

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

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

前言

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

0o328資訊網——每日最新資訊28at.com

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

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

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

實現的效果

0o328資訊網——每日最新資訊28at.com

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

代碼

先別管怎么實現的,先看代碼。0o328資訊網——每日最新資訊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行代碼,就實現了這個功能。0o328資訊網——每日最新資訊28at.com

實現的功能

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

打包

go build main.go

-help

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

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

運行

語法

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

示例

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

0o328資訊網——每日最新資訊28at.com

結果

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

0o328資訊網——每日最新資訊28at.com

打開如下

0o328資訊網——每日最新資訊28at.com

主要代碼理解

flag

0o328資訊網——每日最新資訊28at.com

fileObj

0o328資訊網——每日最新資訊28at.com

判斷是否為目錄,遞歸

0o328資訊網——每日最新資訊28at.com

總結

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 酒泉市| 廊坊市| 寿阳县| 隆子县| 尚志市| 衡阳县| 长治县| 图木舒克市| 邳州市| 历史| 黔东| 夹江县| 榆社县| 丰镇市| 沁阳市| 招远市| 兰州市| 顺义区| 沁阳市| 保康县| 永德县| 历史| 抚宁县| 松原市| 徐汇区| 沙坪坝区| 德保县| 鄂托克前旗| 泸水县| 汕尾市| 渝中区| 泰宁县| 锦州市| 唐山市| 阳曲县| 广汉市| 陆河县| 尼木县| 拉萨市| 禄劝| 教育|