日常 Go語言聖經 示例 併發的目錄遍歷習題

2021-09-07 18:12:44 字數 1316 閱讀 9014

練習 8.9: 編寫乙個du工具,每隔一段時間將root目錄下的目錄大小計算並顯示出來。

package main

import (

// "filepath"

"flag"

"fmt"

"io/ioutil"

"os"

"path"

"sync"

"time")/*

練習 8.9: 編寫乙個du工具,每隔一段時間將root目錄下的目錄大小計算並顯示出來。

*///接收命令列引數-v

var verbose = flag.bool("v", false, "show verbose progress messages")

func main()

}

for

}func sumfilesize(roots string)

//啟動goroutine,等待所有計算目錄的goroutine結束

go func() ()

//定時顯示目錄進度傳送的channel

var tick

if *verbose

var nfiles, nbytes int64

//select和loop迴圈,多路復用

loop:

for

//計算目錄數,計算位元組大小

nfiles++

nbytes += size

case

//接收到定時channel列印進度

printdiskusage(nfiles, nbytes)}}

//最後列印總計

日常 Go語言聖經 示例 併發的目錄遍歷習題

練習 8.9 編寫乙個du工具,每隔一段時間將root目錄下的目錄大小計算並顯示出來。package main import filepath flag fmt io ioutil os path sync time 練習 8.9 編寫乙個du工具,每隔一段時間將root目錄下的目錄大小計算並顯示出...

日常 GO語言聖經 併發獲取多個URL

go語言聖經 併發獲取多個url 1.go最新奇的特性就是對併發程式設計的支援,goroutine和channel 2.goroutine是一種函式的併發執行方式,而channel是用來在goroutine之間進行引數傳遞 go function則表示建立乙個新的goroutine,並在這個新的go...

日常 Go語言聖經 Map習題

練習 4.8 修改charcount程式,使用unicode.isletter等相關的函式,統計字母 數字等unicode中不同的字元類別。練習 4.9 編寫乙個程式wordfreq程式,報告輸入文字中每個單詞出現的頻率。在第一次呼叫scan前先呼叫input.split bufio.scanwor...