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

手把手教你用Go語(yǔ)言開(kāi)發(fā)一款簡(jiǎn)易目錄生成器

開(kāi)發(fā) 前端
有時(shí)候,我看著我的目錄,或者我想找個(gè)文件時(shí),尤其是目錄很多時(shí),總是有點(diǎn)難受。今天就教你用Go語(yǔ)言開(kāi)發(fā)一款簡(jiǎn)易目錄生成器。

[[377341]]

前言

有時(shí)候,我看著我的目錄,或者我想找個(gè)文件時(shí),尤其是目錄很多時(shí),總是有點(diǎn)難受。


比如這個(gè)目錄,是我的一個(gè)教程目錄。

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

所以,基于上述的需求,使用Go語(yǔ)言,終于擼了個(gè)目錄生成器,感覺(jué)還行。

實(shí)現(xiàn)的效果


通過(guò)編寫(xiě)的腳本,可以將目錄整合成.txt文件,并且下級(jí)目錄使用4個(gè)空格縮進(jìn)。

代碼

先別管怎么實(shí)現(xiàn)的,先看代碼。

  1. package main 
  2.  
  3. import ( 
  4.     "bytes" 
  5.     "flag" 
  6.     "fmt" 
  7.     "io/ioutil" 
  8.     "os" 
  9.     "path/filepath" 
  10.  
  11. func GenderNSymbol(char byte, count int) string { 
  12.     symbolSince := bytes.Repeat([]byte{char}, count
  13.     var symbol = string(symbolSince) 
  14.     return symbol 
  15.  
  16. // @title    GenderDirTree 
  17. // @description   生成目錄樹(shù) 
  18. // @param     path        string         "需要生成的目錄" 
  19. // @param     count        int           "生成相同字符的個(gè)數(shù)" 
  20. // @param     char        byte           "生成相同字符的字符" 
  21. // @param     current_tier        int            "當(dāng)前層數(shù)" 
  22. // @param     end_tier        int            "終止層數(shù)" 
  23. // @param     fileObj        int            "文件對(duì)象" 
  24. // @return    無(wú)        無(wú)         "無(wú)" 
  25. func GenderDirTree(path string, count intchar byte, current_tier int, end_tier int, fileObj *os.File) { 
  26.     if !(current_tier < end_tier) && end_tier != 0 { 
  27.         return 
  28.     current_tier++ 
  29.     files, err := ioutil.ReadDir(path) 
  30.     if err != nil { 
  31.         fmt.Println("錯(cuò)誤:目錄錯(cuò)誤"
  32.         return 
  33.     for _, file := range files { 
  34.         var name = file.Name() 
  35.         //生成指定數(shù)目的相同符號(hào) 
  36.         var plac = GenderNSymbol(charcount
  37.         //符號(hào)+目錄 
  38.         var sname = fmt.Sprintf("%s%s\n", plac, name
  39.         //輸出當(dāng)前目錄 
  40.         fileObj.WriteString(sname) 
  41.         //fmt.Println(sname) 
  42.         //判斷是否為目錄,如果是,繼續(xù)下次遞歸 
  43.         var isDir = file.IsDir() 
  44.         if isDir { 
  45.             //拼接傳入的目錄和循環(huán)的當(dāng)前目錄 
  46.             var nerPaht = filepath.Join(path, name
  47.             GenderDirTree(nerPaht, count+4, char, current_tier, end_tier, fileObj) 
  48.         } 
  49.  
  50. func main() { 
  51.     //終止層數(shù),0表示無(wú)限層,>0表示指定層數(shù) 
  52.     var end_tier int 
  53.     //輸入的目錄 
  54.     //var path = `D:\0_教程\易錦教程` 
  55.     var path string 
  56.     flag.StringVar(&path, "path""""目錄"
  57.     flag.IntVar(&end_tier, "tier", 0, "終止層數(shù)"
  58.     flag.Parse() 
  59.     //文件對(duì)象 
  60.     var wDirPath = filepath.Join(path, "目錄.txt"
  61.     fileObj, _ := os.OpenFile(wDirPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) 
  62.     defer fileObj.Close() 
  63.     //生成目錄樹(shù) 
  64.     GenderDirTree(path, 0, ' ', 0, end_tier, fileObj) 

去掉注釋,其實(shí)也就30行代碼,就實(shí)現(xiàn)了這個(gè)功能。

實(shí)現(xiàn)的功能

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

打包

  1. go build main.go 

-help

采用flag包動(dòng)態(tài)控制參數(shù),參數(shù)如下。

  1. d:>main.exe -h 
  2. Usage of main.exe: 
  3.   -path string 
  4.         目錄 
  5.   -tier int 
  6.         終止層數(shù) 

運(yùn)行

語(yǔ)法

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

示例

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

結(jié)果

會(huì)在要生成的目錄下,多出一個(gè)目錄.txt。


打開(kāi)如下


主要代碼理解

flag


fileObj


判斷是否為目錄,遞歸


總結(jié)

本次更像是日常使用中,為了解決實(shí)際問(wèn)題的腳本,其實(shí)腳本使用Python更好。

但是Go有一個(gè)更大的優(yōu)勢(shì)就是可以編譯為exe。

這次的難點(diǎn)主要是理解遞歸,自己調(diào)自己!

 

責(zé)任編輯:姜華 來(lái)源: Go語(yǔ)言進(jìn)階學(xué)習(xí)
相關(guān)推薦

2024-01-07 20:00:27

2021-01-10 08:14:01

Go語(yǔ)言TCP掃描器

2023-05-22 10:04:24

2021-02-01 08:41:06

Java考試系統(tǒng)

2021-02-04 15:52:46

Java考試系統(tǒng)

2017-09-14 09:09:04

php應(yīng)用LibreOfficeWord轉(zhuǎn)HTML

2021-01-04 09:55:26

Java移動(dòng)互聯(lián)網(wǎng)

2021-01-05 09:04:20

Javatxt文件

2021-08-13 09:01:31

Python小游戲Python基礎(chǔ)

2021-08-09 13:31:25

PythonExcel代碼

2022-10-19 14:30:59

2021-08-23 07:32:57

生成器開(kāi)發(fā)代碼

2011-03-28 16:14:38

jQuery

2021-02-04 09:00:57

SQLDjango原生

2021-02-06 14:55:05

大數(shù)據(jù)pandas數(shù)據(jù)分析

2022-08-04 10:39:23

Jenkins集成CD

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2023-03-14 07:34:47

代碼生成器開(kāi)發(fā)

2009-04-22 09:17:19

LINQSQL基礎(chǔ)

2021-05-10 06:48:11

Python騰訊招聘
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 男插女下体视频 | 青青草视频网 | 激情欧美日韩一区二区 | 国产精品s色 | 精品成人| 伊人久久成人 | 麻豆av在线 | 亚洲一区精品视频 | 日韩av一区二区在线 | 欧美激情一区二区 | 成人国产网站 | 风间由美一区二区三区在线观看 | 国产97人人超碰caoprom | 99爱免费 | 日韩精品福利 | 97人人超碰 | 欧美一区二区三区在线观看视频 | 一级毛片色一级 | 欧美精品在线免费观看 | 成av在线 | 日韩一区二区成人 | 日韩欧美精品一区 | 日本精品视频 | 日韩欧美第一页 | 国产精品久久久乱弄 | 九九热精品视频 | 国产高清在线观看 | 亚洲一区二区成人 | 欧美激情国产精品 | 欧美综合自拍 | 久久国产精品免费 | 久久精品亚洲 | 亚洲成人www | 在线观看成年人视频 | av片免费| 香蕉一区 | 国产不卡一区 | 午夜精品久久久久99蜜 | 一级黄色日本片 | 九九综合九九 | 久久久久免费精品国产 |