Existe-t-il une méthode standard dans Golang pour effacer l'écran du terminal lorsque j'exécute un script GO? ou je dois utiliser d'autres bibliothèques?
Vous devez définir une méthode claire pour chaque système d'exploitation, comme celui-ci. Lorsque le système d'exploitation de l'utilisateur n'est pas pris en charge, il panique
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...")
}
(l'exécution de la commande provient de la réponse de @merosss)
Vous pouvez le faire avec codes d'échappement ANSI :
print("\033[H\033[2J")
Mais sachez qu’il n’existe pas de solution multi-plateforme à toute épreuve pour une telle tâche. Vous devez vérifier la plate-forme (Windows/UNIX) et utiliser les codes cls
/clear
ou d'échappement.
Utilisez 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)
}
}
Comme signalé ici vous pouvez utiliser les trois lignes suivantes pour effacer l'écran:
c := exec.Command("clear")
c.Stdout = os.Stdout
c.Run()
N'oubliez pas d'importer "os" et "os/exec".
N'utilisez pas l'exécution de commande pour cela.
Au lieu de cela, j'ai également créé un petit paquet utilitaire. Cela fonctionne sur Windows et les invites de commande Bash.
???? https://github.com/inancgumus/screen
package main
import (
"fmt"
"time"
"github.com/inancgumus/screen"
)
func main() {
// Clears the screen
screen.Clear()
for {
// Moves the cursor to the top left corner of the screen
screen.MoveTopLeft()
fmt.Println(time.Now())
time.Sleep(time.Second)
}
}
Facile pour les systèmes nix:
fmt.Println("\033[2J")