2013-10-06 48 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

これは完全にあなたのOSやコンソールに依存しますので、あなたが使っているものをOS追加する必要があります。 "cls"は実行ファイルではないので(execが期待している)system()を呼び出す必要があります。 – ClojureMostly

+0

私はスタックオーバーフローの初心者です。私はwindowsタグを追加しました。 –

答えて

9

必要なのは、次のとおりです。

package main 

import (
"os" 
"os/exec" 
) 

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

それは変だと思われますが、あなたのコードはウィンドウ内で動作します。なぜ "cls"を直接呼び出すのではなく、 "cmd"を "cls"引数で呼び出すべきですか。とにかく、ありがとう。 –

+2

その理由は、 "cls"はDOSの "シェル"への組み込みコマンドであり、スタンドアロンの実行可能ファイルではないからです。だから、 "cls"とタイプすると実行中のシェルの画面がクリアされますが、決して外部コマンドは実行されません。 goでコマンドを実行すると、シェルを介さずに直接コマンドを実行します。 HTH – ClojureMostly

11

が実際にこれを実行する簡単な方法はありませんクロスプラットフォームの標準ライブラリを使用しています。

termbox-goは、クロスプラットフォームの端末制御を提供する1つのライブラリのようです。おそらく他のものがありますが、それは私が使った唯一のものであり、うまくいくようです。

termbox-goを使用してコンソールを消去することは、Clear、次にFlushの問題です。

詳細はhttp://godoc.org/github.com/nsf/termbox-goを参照してください。

関連する問題