成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
有時候,我看著我的目錄,或者我想找個文件時,尤其是目錄很多時,總是有點難受。

前言

時候,我看著我的目錄,或者我想找個文件時,尤其是目錄很多時,總是有點難受。

比如這個目錄,是我的一個教程目錄。

但是我并不能一目了然的知道每個文件夾下都有啥,并且每次找一個文件也很費事。

所以,基于上述的需求,使用Go語言,終于擼了個目錄生成器,感覺還行。

實現的效果

通過編寫的腳本,可以將目錄整合成.txt文件,并且下級目錄使用4個空格縮進。

代碼

先別管怎么實現的,先看代碼。

package main


import (
    "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         "需要生成的目錄"
// @param     count        int           "生成相同字符的個數"
// @param     char        byte           "生成相同字符的字符"
// @param     current_tier        int            "當前層數"
// @param     end_tier        int            "終止層數"
// @param     fileObj        int            "文件對象"
// @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行代碼,就實現了這個功能。

實現的功能

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

打包

go build main.go

-help

用flag包動態控制參數,參數如下。

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

運行

語法

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

示例

此處-tier指定的是0,表示無限制生成,如果指定是1,就表示生成一層。

結果

會在要生成的目錄下,多出一個目錄.txt。

打開如下

主要代碼理解

flag

fileObj

判斷是否為目錄,遞歸

總結

本次更像是日常使用中,為了解決實際問題的腳本,其實腳本使用Python更好。

但是Go有一個更大的優勢就是可以編譯為exe。

這次的難點主要是理解遞歸,自己調自己!

責任編輯:華軒 來源: Go語言進階學習
相關推薦

2021-01-21 06:04:55

Go語言TCP目錄生成器

2021-01-10 08:14:01

Go語言TCP掃描器

2023-05-22 10:04:24

2021-02-01 08:41:06

Java考試系統

2021-02-04 15:52:46

Java考試系統

2017-09-14 09:09:04

php應用LibreOfficeWord轉HTML

2021-01-04 09:55:26

Java移動互聯網

2021-01-05 09:04:20

Javatxt文件

2021-08-13 09:01:31

Python小游戲Python基礎

2021-08-09 13:31:25

PythonExcel代碼

2022-10-19 14:30:59

2021-08-23 07:32:57

生成器開發代碼

2011-03-28 16:14:38

jQuery

2021-02-04 09:00:57

SQLDjango原生

2021-02-06 14:55:05

大數據pandas數據分析

2022-08-04 10:39:23

Jenkins集成CD

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2023-03-14 07:34:47

代碼生成器開發

2009-04-22 09:17:19

LINQSQL基礎

2021-12-30 08:56:57

Python摸魚倒計界面Python基礎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本三级电影在线看 | 欧美一级视频免费看 | 精品久久一区二区 | 国产真实精品久久二三区 | 成人免费视频在线观看 | 久久久91精品国产一区二区三区 | 久久久久国产精品一区三寸 | 亚洲欧洲视频 | 在线观看电影av | 精品视频一区二区三区 | 97精品久久 | 日韩在线免费视频 | 日本韩国电影免费观看 | 亚洲精品2 | 成人在线播放网站 | 亚洲国产精品久久久 | 国产色婷婷精品综合在线播放 | 91就要激情 | a级毛片免费高清视频 | 人人擦人人 | 特黄小视频 | 国产精品久久久久久久白浊 | 国产欧美一区二区精品忘忧草 | 国产一级毛片精品完整视频版 | www.日韩| 欧美亚洲视频在线观看 | 国产激情一区二区三区 | 天天躁天天操 | 男女搞网站| 久久一 | 天天在线操 | 国产精品一区二区在线 | 欧美精品一区在线观看 | 99re视频在线观看 | 国产在线精品一区二区三区 | 日本一二区视频 | 国产一区二区三区精品久久久 | 欧美三级在线 | 国内精品久久久久久久 | 91精品国产乱码久久久久久久 | 国产精品免费一区二区三区四区 |