2013-10-06 10 views
7

Próbowałem wiele sposobów, jakJak mogę wyczyścić konsolę z golangiem w oknach?

package main 
import (
    "os" 
    "os/exec" 
) 

func main() { 
    c := exec.Command("cls") 
    c.Stdout = os.Stdout 
    c.Run() 
} 

i

C.system(C.CString("cls")) 

i sekwencja ucieczki nie działa albo

+0

Od tego będzie zależeć wyłącznie od systemu operacyjnego i konsoli, należy dodać co OS używasz. Jeśli windows wygląda na to, że musisz wykonać wywołanie system() do "cls", ponieważ "cls" nie jest plikiem wykonywalnym (czyli takim, czego oczekuje exec) – ClojureMostly

+0

Mam to, jestem nowicjuszem Stack Overflow. Dodałem tag Windows. –

Odpowiedz

9

Wszystko czego potrzebujesz to:

package main 

import (
"os" 
"os/exec" 
) 

func main() { 
    cmd := exec.Command("cmd", "/c", "cls") 
    cmd.Stdout = os.Stdout 
    cmd.Run() 
} 
+0

Wydaje się dziwne, ale twój kod działa tylko w systemie Windows. Dlaczego mamy wywoływać "cmd" z argumentem "cls", zamiast wywoływać "cls" bezpośrednio. W każdym razie, wielkie dzięki. –

+2

Powodem jest to, że "cls" jest wbudowanym poleceniem w powłoce DOS, a nie samodzielnym plikiem wykonywalnym. Więc kiedy wpisujesz "cls", po prostu czyści ekran twojej działającej powłoki, ale nigdy nie uruchamia zewnętrznego polecenia. Kiedy uruchamiasz polecenie, uruchamiasz polecenia bezpośrednio, a nie przez powłokę. HTH – ClojureMostly

11

Jest bardzo łatwy sposób zrobić to w międzyplatformowy sposób korzystania ze standardowych bibliotek.

termbox-go wydaje się być jedną biblioteką zapewniającą sterowanie terminalem między platformami. Są prawdopodobnie inne, ale to jedyny, z którego korzystałem i wygląda na to, że działa dobrze.

Czyszczenie konsoli przy użyciu termbox-go byłoby kwestią wykonania Clear, a następnie Flush.

Aby uzyskać więcej informacji, patrz http://godoc.org/github.com/nsf/termbox-go.

Powiązane problemy