我有以下代码,使用包来绘制进度条type tmpStruct struct {}func (t *tmpStruct) Write(p []byte) (n int, err error) { fmt.Fprintf(os.Stdout, "%s", string(p)) return len(p), nil}func demoLoadingBarCount(maximumInt int) { buf := tmpStruct{} if nBuf, ok := interface{}(&buf).(io.Writer); ok { bar := progressbar.NewOptions( maximumInt, progressbar.OptionSetTheme(progressbar.Theme{Saucer: "█", SaucerPadding: "-", BarStart: ">", BarEnd: "<"}), progressbar.OptionSetWidth(100), progressbar.OptionSetWriter(nBuf), ) for i := 0; i < maximumInt; i++ { bar.Add(1) time.Sleep(10 * time.Millisecond) } }}一切正常,除了最后没有换行,正如您在此处看到的那样 我无法在 Write 函数中添加新行字符,因为这会导致在将每个字节推送到写入器后将其添加到新行。有什么巧妙的方法可以做到这一点吗?编辑:我想要在进度条之后和下一行打印之前添加新行
1 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
您所问问题的简单答案就是在进度条完成后打印一个额外的换行符:
func demoLoadingBarCount(maximumInt int) {
buf := &tmpStruct{}
bar := progressbar.NewOptions(
maximumInt,
progressbar.OptionSetTheme(progressbar.Theme{Saucer: "█", SaucerPadding: "-", BarStart: ">", BarEnd: "<"}),
progressbar.OptionSetWidth(100),
progressbar.OptionSetWriter(buf),
)
for i := 0; i < maximumInt; i++ {
bar.Add(1)
time.Sleep(10 * time.Millisecond)
}
fmt.Fprintf(buf, "\n") // <---- Add this
}
- 1 回答
- 0 关注
- 208 浏览
添加回答
举报
0/150
提交
取消