亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

除了 goroutines 之外,我如何使用微調器以使輸出不會相互覆蓋?

除了 goroutines 之外,我如何使用微調器以使輸出不會相互覆蓋?

Go
忽然笑 2022-12-05 16:17:25
我想做的是使用微調器來指示幾個 goroutine 中的工作進度。我遇到的問題是微調器消息和作業完成消息都記錄在同一行中。我要問的是如何將微調器固定到底部,以便微調器狀態不會妨礙記錄的消息本身?我得到的輸出是a? 1/26c? 2/26b? 3/26e? 4/26d? 5/26g? 6/26f我想要得到的是abcdef? 6/26臨時工作代碼。(我意識到我的 go 例程可能不是很優雅,但這只是一個例子)。
查看完整描述

2 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

根據您最初的問題,這是不在行中顯示微調器的解決方案:


引入一個變量

pauseItForAMoment := false這將有助于忽略在你的一個 goroutine 中是否暫停。


func main() {

    pauseItForAMoment := false

goroutine 看起來像這樣:


        // tried moving this into the worker goroutine also, but same effect

        for range spinnerCh {

            current += 1

            if !pauseItForAMoment {

                if err := s.Pause(); err != nil {

                    panic(err)

                }

                s.Message(fmt.Sprintf("%d/%d", current, total))

                if err := s.Unpause(); err != nil {

                    panic(err)

                }

            }

        }

    }(spinner)

打印時停止和啟動微調器d

                pauseItForAMoment = true

                spinner.Prefix(d)

                spinner.Stop()

                // fmt.Println(d)

                spinner.Start()

                pauseItForAMoment = false

將幾個微調器配置值更改為:

        StopCharacter:   " ",

        // StopMessage:       "done",

請注意,您的 goroutine 并不完全正確地按照您已經知道的順序打印它們,希望您能解決這個問題。


輸出如下所示:

http://img1.sycdn.imooc.com//638da93800015b8301310315.jpg

如果不清楚,這里是代碼https://go.dev/play/p/0lOza3aapf2

我更喜歡在下面顯示這樣的輸出 & 代碼是https://go.dev/play/p/W8Y1kwNqphl(只是我的 2cents ;-) 如果你不需要它,請忽略它)

http://img1.sycdn.imooc.com//638da94300018f7501220320.jpg


查看完整回答
反對 回復 2022-12-05
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

圖書館的作者在這里。根據您在打開的 GitHub 問題中分享的片段,我認為您只需要將StopCharacter值設置為空字符串而不是" ". 它讓它為我呈現這樣......

http://img1.sycdn.imooc.com//638da95100010b2803340672.jpg

這是Go Playground 上的代碼,因為我太笨了,不知道如何在不丟失格式的情況下復制和粘貼它。

我希望這有幫助!


查看完整回答
反對 回復 2022-12-05
  • 2 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號