Вы можете использовать ANSI Escape-коды
Сначала сохраните позицию курсора с помощью fmt.Print("\033[s")
, затем для каждой строки восстановите позицию и очистите линию перед печатьюстрока с fmt.Print("\033[u\033[K")
Ваш код может быть:
// before entering the loop
fmt.Print("\033[s") // save the cursor position
for ... {
...
fmt.Print("\033[u\033[K") // restore the cursor position and clear the line
if err != nil {
fmt.Printf("Could not retrieve file info for %s\n", f)
} else {
fmt.Printf("Retrieved %s\n", f)
}
...
}
Это должно работать, если ваша программа не напечатает строку в нижней части экрана, генерируя прокрутку вашего текста.В этом случае вы должны удалить \n
и убедиться, что ни одна строка не превышает ширину экрана (или окна).
Другим вариантом может быть перемещение курсора вверх после каждой записи:
for ... {
...
fmt.Print("\033[G\033[K") // move the cursor left and clear the line
if err != nil {
fmt.Printf("Could not retrieve file info for %s\n", f)
} else {
fmt.Printf("Retrieved %s\n", f)
}
fmt.Print("\033[A") // move the cursor up
...
}
Опять же, это работает, пока ваша линия соответствует ширине экрана / окна.