2013-10-06 85 views
7

我已經嘗試了很多辦法,比如如何在Windows中使用golang清除控制檯?

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

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

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

而且轉義序列無法正常工作或

+0

因爲這將完全取決於你的操作系統和控制檯上,你應該增加你使用什麼操作系統。如果Windows看起來像你需要做一個system()調用「cls」,因爲「cls」不是可執行文件(這是exec期望的) – ClojureMostly

+0

明白了,我是Stack Overflow的新手。我已經添加了Windows標籤。 –

回答

9

所有你需要的是:

package main 

import (
"os" 
"os/exec" 
) 

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

看起來很奇怪,但你的代碼只能在windows中工作。爲什麼我們應該用「cls」參數來調用「cmd」,而不是直接調用「cls」。無論如何,非常感謝。 –

+2

原因是「cls」是進入DOS「shell」的內置命令,而不是獨立的可執行文件。因此,當你輸入「cls」時,它只會清除運行中的shell的屏幕,但不會運行外部命令。當你運行一個命令時,你直接運行命令而不是通過一個shell。 HTH – ClojureMostly

11

真的沒有簡單的方法在做這跨平臺的方式使用標準庫。

termbox-go似乎是一個提供跨平臺終端控制的庫。可能還有其他的,但它是我使用過的唯一一個,它似乎運作良好。

清除使用termbox-go會做一個Clear然後Flush的問題控制檯。

查看http://godoc.org/github.com/nsf/termbox-go瞭解更多詳情。