栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为执行的过程创建等待/忙碌指示器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为执行的过程创建等待/忙碌指示器

您可以使用另一个goroutine定期(例如每秒)打印一些内容(例如点)。命令完成后,发出信号告知goroutine终止。

像这样:

func indicator(shutdownCh <-chan struct{}) {    ticker := time.NewTicker(time.Second)    defer ticker.Stop()    for {        select {        case <-ticker.C: fmt.Print(".")        case <-shutdownCh: return        }    }}func main() {    cmd := exec.Command("npm", "install")    log.Printf("Running command and waiting for it to finish...")    // Start indicator:    shutdownCh := make(chan struct{})    go indicator(shutdownCh)    err := cmd.Run()    close(shutdownCh) // Signal indicator() to terminate    fmt.Println()    log.Printf("Command finished with error: %v", err)}

如果要在每5个点之后开始新的一行,可以这样做:

func indicator(shutdownCh <-chan struct{}) {    ticker := time.NewTicker(time.Second)    defer ticker.Stop()    for i := 0; ; {        select {        case <-ticker.C: fmt.Print(".") if i++; i%5 == 0 {     fmt.Println() }        case <-shutdownCh: return        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号