У меня есть следующий код, который использует пакет для рисования индикатора выполнения
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, поскольку это приведет к его появлению на новой строке после каждого байта, переданного в устройство записи.Есть ли способ сделать это аккуратно?
РЕДАКТИРОВАТЬ: я хочу новую строку после индикатор выполнения и до того, как следующая строка печатает