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

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

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

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

前言

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

cc628資訊網(wǎng)——每日最新資訊28at.com

比如這個目錄,是我的一個教程目錄。cc628資訊網(wǎng)——每日最新資訊28at.com

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

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

實現(xiàn)的效果

cc628資訊網(wǎng)——每日最新資訊28at.com

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

代碼

先別管怎么實現(xiàn)的,先看代碼。cc628資訊網(wǎng)——每日最新資訊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           "生成相同字符的個數(shù)"http:// @param     char        byte           "生成相同字符的字符"http:// @param     current_tier        int            "當前層數(shù)"http:// @param     end_tier        int            "終止層數(shù)"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()        //生成指定數(shù)目的相同符號        var plac = GenderNSymbol(char, count)        //符號+目錄        var sname = fmt.Sprintf("%s%s/n", plac, name)        //輸出當前目錄        fileObj.WriteString(sname)        //fmt.Println(sname)        //判斷是否為目錄,如果是,繼續(xù)下次遞歸        var isDir = file.IsDir()        if isDir {            //拼接傳入的目錄和循環(huán)的當前目錄            var nerPaht = filepath.Join(path, name)            GenderDirTree(nerPaht, count+4, char, current_tier, end_tier, fileObj)        }}}func main() {    //終止層數(shù),0表示無限層,>0表示指定層數(shù)    var end_tier int    //輸入的目錄    //var path = `D:/0_教程/易錦教程`    var path string    flag.StringVar(&path, "path", "", "目錄")    flag.IntVar(&end_tier, "tier", 0, "終止層數(shù)")    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行代碼,就實現(xiàn)了這個功能。cc628資訊網(wǎng)——每日最新資訊28at.com

實現(xiàn)的功能

  • 自定義要生成的目錄。
  • 自定義生成目錄終止的層數(shù)。

打包

go build main.go

-help

用flag包動態(tài)控制參數(shù),參數(shù)如下。cc628資訊網(wǎng)——每日最新資訊28at.com

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

運行

語法

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

示例

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

cc628資訊網(wǎng)——每日最新資訊28at.com

結(jié)果

會在要生成的目錄下,多出一個目錄.txt。cc628資訊網(wǎng)——每日最新資訊28at.com

cc628資訊網(wǎng)——每日最新資訊28at.com

打開如下

cc628資訊網(wǎng)——每日最新資訊28at.com

主要代碼理解

flag

cc628資訊網(wǎng)——每日最新資訊28at.com

fileObj

cc628資訊網(wǎng)——每日最新資訊28at.com

判斷是否為目錄,遞歸

cc628資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

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

但是Go有一個更大的優(yōu)勢就是可以編譯為exe。cc628資訊網(wǎng)——每日最新資訊28at.com

這次的難點主要是理解遞歸,自己調(diào)自己!cc628資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 建宁县| 昭苏县| 时尚| 龙门县| 南康市| 孟州市| 长寿区| 大悟县| 太湖县| 屏东市| 天全县| 天津市| 方正县| 白河县| 肇东市| 兴仁县| 溧阳市| 额尔古纳市| 嘉禾县| 阿瓦提县| 武夷山市| 陇川县| 景洪市| 石屏县| 酉阳| 女性| 江津市| 古田县| 万载县| 准格尔旗| 方正县| 札达县| 临邑县| 古田县| 湾仔区| 平远县| 普兰店市| 巴林右旗| 广汉市| 喀喇沁旗| 甘孜县|