AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

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

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

前言

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

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

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

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

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

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

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

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

代碼

先別管怎么實(shí)現(xiàn)的,先看代碼。RsK28資訊網(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   生成目錄樹(shù)// @param     path        string         "需要生成的目錄"http:// @param     count        int           "生成相同字符的個(gè)數(shù)"http:// @param     char        byte           "生成相同字符的字符"http:// @param     current_tier        int            "當(dāng)前層數(shù)"http:// @param     end_tier        int            "終止層數(shù)"http:// @param     fileObj        int            "文件對(duì)象"http:// @return    無(wú)        無(wú)         "無(wú)"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("錯(cuò)誤:目錄錯(cuò)誤")        return}    for _, file := range files {        var name = file.Name()        //生成指定數(shù)目的相同符號(hào)        var plac = GenderNSymbol(char, count)        //符號(hào)+目錄        var sname = fmt.Sprintf("%s%s/n", plac, name)        //輸出當(dāng)前目錄        fileObj.WriteString(sname)        //fmt.Println(sname)        //判斷是否為目錄,如果是,繼續(xù)下次遞歸        var isDir = file.IsDir()        if isDir {            //拼接傳入的目錄和循環(huán)的當(dāng)前目錄            var nerPaht = filepath.Join(path, name)            GenderDirTree(nerPaht, count+4, char, current_tier, end_tier, fileObj)        }}}func main() {    //終止層數(shù),0表示無(wú)限層,>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()    //文件對(duì)象    var wDirPath = filepath.Join(path, "目錄.txt")    fileObj, _ := os.OpenFile(wDirPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)    defer fileObj.Close()    //生成目錄樹(shù)    GenderDirTree(path, 0, ' ', 0, end_tier, fileObj)}

去掉注釋,其實(shí)也就30行代碼,就實(shí)現(xiàn)了這個(gè)功能。RsK28資訊網(wǎng)——每日最新資訊28at.com

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

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

打包

go build main.go

-help

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

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

運(yùn)行

語(yǔ)法

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

示例

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

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

結(jié)果

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

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

打開(kāi)如下

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

主要代碼理解

flag

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

fileObj

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

判斷是否為目錄,遞歸

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

總結(jié)

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

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

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

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

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

上一篇: 掌握Python之道:正確學(xué)習(xí)官方文檔的有效方法

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

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 5月iOS設(shè)備性能榜:M1 M2依舊是榜單前五

    和上個(gè)月一樣,沒(méi)有新品發(fā)布的iOS設(shè)備性能榜的上榜設(shè)備并沒(méi)有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動(dòng),剛剛開(kāi)始的蘋(píng)果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 企業(yè)采用CRM系統(tǒng)的11個(gè)好處

    客戶關(guān)系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動(dòng),以改善客戶體驗(yàn)和滿意度。  CRM軟件市場(chǎng)規(guī)模如今超過(guò)580
  • 中國(guó)家電海外掘金正當(dāng)時(shí)|出海專題

    作者|吳南南編輯|胡展嘉運(yùn)營(yíng)|陳佳慧出品|零態(tài)LT(ID:LingTai_LT)2023年,出海市場(chǎng)戰(zhàn)況空前,中國(guó)創(chuàng)業(yè)者在海外紛紛摩拳擦掌,以期能夠把中國(guó)的商業(yè)模式、創(chuàng)業(yè)理念、戰(zhàn)略打法輸出海外,他們依
  • 一條抖音4億人圍觀 ! 這家MCN比無(wú)憂傳媒還野

    作者:Hiu 來(lái)源:互聯(lián)網(wǎng)品牌官01 擦邊少女空降熱搜,幕后推手曝光被網(wǎng)友譽(yù)為&ldquo;純欲天花板&rdquo;的女網(wǎng)紅井川里予,近期因?yàn)橐唤M哥特風(fēng)照片登上熱搜,引發(fā)了一場(chǎng)互聯(lián)網(wǎng)世界關(guān)于
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機(jī)模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開(kāi)始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來(lái)更新,有望在9-10月份帶來(lái)全新的華為Mate60
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報(bào)道 從三強(qiáng)爭(zhēng)霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來(lái)。無(wú)論是老牌勁旅臺(tái)積電、三星,還是誓言重回先進(jìn)制程領(lǐng)先地位的英特爾,甚至初成立不久的新
  • 自研Exynos回歸!三星Galaxy S24系列將提供Exynos和驍龍雙版本

    年初,全新的三星Galaxy S23系列發(fā)布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三個(gè)版本,全系搭載超頻版驍龍8 Gen 2,雖同樣采用臺(tái)積電4nm工藝制
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護(hù)航

    喜逢開(kāi)學(xué)季,各大商家開(kāi)始推出自己的新產(chǎn)品,進(jìn)行打折促銷活動(dòng)。對(duì)于忠實(shí)的端游愛(ài)好者來(lái)說(shuō),能夠擁有一款夢(mèng)寐以求的筆記本電腦是一件十分開(kāi)心的事。但是現(xiàn)在的
  • AI藝術(shù)欣賞體驗(yàn)會(huì)在上海梅賽德斯奔馳中心音樂(lè)俱樂(lè)部上演

    光影交錯(cuò)的鏡像世界,虛實(shí)幻化的視覺(jué)奇觀,虛擬偶像與真人共同主持,這些場(chǎng)景都出現(xiàn)在2019世界人工智能大會(huì)的舞臺(tái)上。8月29日至31日,“AI藝術(shù)欣賞體驗(yàn)會(huì)”在上海
Top