2013-10-06 103 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了解更多详情。