当前位置: 首页 > 面试题库 >

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

艾哲
2023-03-14
问题内容

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


问题答案:

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

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

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的答案)



 类似资料:
  • 问题内容: 我正在为Swift2中的命令行编写BASIC解释器,但是我找不到实现简单命令CLS(从终端清除所有文本的方法)的方法。我应该只是在循环中打印空格还是有功能?我不知道那会清除终端屏幕吗? 问题答案: 将内置命令与 或(询问Google) 或者,通过命令行使用AppleScript模拟Ctrl + L的按下: 编辑:在较新版本的Swift中不再可用。

  • 问题内容: 使用终端上的命令只会使用户误以为屏幕已被清除…使用鼠标滚动时,您仍然可以看到以前命令的输出。当您淹没在文本海啸中时,这将使生活变得困难。 可以在Internet上找到的各种解决方案(转义码等)只是clear命令已经完成的工作的变体。 那么,如何真正清除Linux中终端的内容呢? 问题答案: 使用以下命令可以清晰显示屏幕,而不仅仅是添加新行… 是的,这是bash提示上的“ printf”

  • 问题内容: 有没有办法用nasm清除终端窗口中的屏幕?通过清除屏幕,我的意思是模仿热键。从窗口中删除所有文本。 是否可以在nasm组装中进行? 提前致谢, 赖利 问题答案: 在Bash中: 在C中: 我如何找到字符串:

  • 问题内容: 是否存在任何标准的“自带电池”方法可以从Python脚本中清除终端屏幕,还是我必须诅咒(库,而不是文字)? 问题答案: 那么转义序列呢?

  • 我试图找到一种方法来擦除文本屏幕从我的计算器,当你按下 /-按钮,使其行为更像一个真正的计算器。 php文件返回html代码,其中我有一个

  • 问题内容: 在Go中清除切片的适当方法是什么? 这是我在go论坛中找到的内容: 这样对吗? 为了澄清起见,清除了缓冲区,以便可以重用它。 一个示例是bytes包中的Buffer.Truncate函数。 请注意,Reset只是调用Truncate(0)。因此看来,在这种情况下,第70行将评估:b.buf = b.buf [0:0] http://golang.org/src/pkg/bytes/bu