Solución:
Nota: Ejecutar un comando para limpiar la pantalla no es una forma segura. Compruebe las otras respuestas aquí también.
Tienes que definir un método claro para cada sistema operativo diferente, como este. Cuando el sistema operativo del usuario no es compatible, entra en pánico
package main
import (
"fmt"
"os"
"os/exec"
"runtime"
"time"
)
var clear map[string]func() //create a map for storing clear funcs
func init() {
clear = make(map[string]func()) //Initialize it
clear["linux"] = func() {
cmd := exec.Command("clear") //Linux example, its tested
cmd.Stdout = os.Stdout
cmd.Run()
}
clear["windows"] = func() {
cmd := exec.Command("cmd", "/c", "cls") //Windows example, its tested
cmd.Stdout = os.Stdout
cmd.Run()
}
}
func CallClear() {
value, ok := clear[runtime.GOOS] //runtime.GOOS -> linux, windows, darwin etc.
if ok { //if we defined a clear func for that platform:
value() //we execute it
} else { //unsupported platform
panic("Your platform is unsupported! I can't clear terminal screen :(")
}
}
func main() {
fmt.Println("I will clean the screen in 2 seconds!")
time.Sleep(2 * time.Second)
CallClear()
fmt.Println("I'm alone...")
}
(la ejecución del comando es de la respuesta de @merosss)
Podrías hacerlo con códigos de escape ANSI:
fmt.Print(" 33[H 33[2J")
Pero debe saber que no existe una solución multiplataforma a prueba de balas para tal tarea. Debe verificar la plataforma (Windows / UNIX) y usar cls
/ clear
o códigos de escape.
Usar goterm
package main
import (
tm "github.com/buger/goterm"
"time"
)
func main() {
tm.Clear() // Clear current screen
for {
// By moving cursor to top-left position we ensure that console output
// will be overwritten each time, instead of adding new.
tm.MoveCursor(1, 1)
tm.Println("Current Time:", time.Now().Format(time.RFC1123))
tm.Flush() // Call it every time at the end of rendering
time.Sleep(time.Second)
}
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)