練習 8.9: 編寫乙個du工具,每隔一段時間將root目錄下的目錄大小計算並顯示出來。
package mainimport (
// "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...