如何清除 Go 中的终端屏幕?

新手上路,请多包涵

当我运行 GO 脚本时,Golang 中是否有任何标准方法来清除终端屏幕?或者我必须使用其他一些库?

原文由 Anish Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

注意: 运行命令来清除屏幕不是一种安全的方法。在这里也检查其他答案。


你必须为每个不同的操作系统定义一个清晰的方法,就像这样。当用户的操作系统不受支持时,它会出现恐慌

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...")
}

(命令执行来自@merosss的回答)

原文由 mraron 发布,翻译遵循 CC BY-SA 4.0 许可协议

你可以用 ANSI 转义码 来做到这一点:

 fmt.Print("\033[H\033[2J")

但是您应该知道,没有针对此类任务的万无一失的跨平台解决方案。您应该检查平台 (Windows / UNIX) 并使用 cls / clear 或转义码。

原文由 Kavu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题