前言有时候,当我查看我的目录时,或者当我想查找文件时,尤其是目录很多的时候,总是有点不适应。例如,这个目录是我的教程目录之一。但是我不能一眼就知道每个文件夹里有什么,而且每次都要找一个文件很麻烦。于是,基于以上需求,使用Go语言,终于搞定了一个目录生成器,感觉还行。实现的效果可以通过写好的脚本集成到一个.txt文件中,下级目录以4个空格缩进。不管代码是怎么实现的,先看代码。packagemainimport("bytes""flag""fmt""io/ioutil""os""path/filepath")funcGenderNSymbol(charbyte,countint)string{symbolSince:=bytes.Repeat([]byte{char},count)varsymbol=string(symbolSince)returnssymbol}//@titleGenderDirTree//@description生成目录树//@parampathstring"需要生成的目录"//@paramcountint"生成相同字符的个数"//@paramcharbyte"生成相同字符的字符"//@paramcurrent_tierint"当前层数"//@paramend_tierint"结束层数"//@paramfileObjint"文件对象"//@returnNoneNone"None"funcGenderDirTree(pathstring,countint,charbyte,current_tierint,end_tierint,fileObj*os.File){if!(current_tier0表示指定层数varend_tierint//输入目录//varpath=`D:\0_tutorial\易进教程`varpathstringflag.StringVar(&path,"path","","directory")flag.IntVar(&end_tier,"tier",0,"结束层数")flag.Parse()//文件对象varwDirPath=filepath.Join(path,"directory.txt")fileObj,_:=os.OpenFile(wDirPath,os.O_CREATE|os.O_TRUNC|os.O_WRONLY,0666)deferfileObj.Close()//生成目录树GenderDirTree(path,0,'',0,end_tier,fileObj)}去掉注释,其实只需要30行代码就可以实现这个函数的功能。自定义要生成的目录。自定义构建目录终止的级别数。打包gobuildmain.go-help使用flag包动态控制参数,参数如下。d:>main.exe-hUsageofmain.exe:-pathstringdirectory-tierint终止层运行语法main.exe-path<要生成的目录>-tier<终止层级>注:-tier,终止层数,0表示无限制Tier,>0表示指定的层数,默认为0。这里的例子-tier指定0,表示无限生成。如果指定为1,则表示生成一层。这样一来,要生成的目录下就会多出一个目录.txt。打开下面主要代码了解flagfileObj判断是否是目录,这次递归总结更像是日常使用的脚本,为了解决实际问题,其实脚本还是用Python比较好。但是Go还有一个更大的优势就是可以编译成exe。这次的难点主要是理解递归和自己调整!