我如何在 Go 中进行“光标向上”?(清楚到行尾也很高兴知道)。(所有平台)。
为了详细说明和显示上下文,我正在用 Go 编写一个测试程序,它需要输入一些参数(通过控制台),这些参数存储在一个文本文件中并用作下一次使用的默认值。我想要一些非常基本的控制台“编辑”功能。
目前它相当原始,因为我不想深入控制台编辑,我只想要一些相当基本但又不太基本的东西。
在下面来自我的测试程序的示例中,字符串变量“sPrompt”包含输入提示,右侧显示默认值,然后有退格字符来定位光标,这样默认值就不会被覆盖——就像我说,很基础。
当操作员输入输入时,如果出现错误,我想显示一条错误消息,然后在任何一种情况下将光标向上移动到刚刚显示/输入的行,如果出现错误,则显示原始行,或者如果正确,只显示提示和新参数。
我确实在某处读到应该避免使用 ReadLine(),但它似乎可以完成这项工作。
例子:
func fInputString(sPrompt string, asValid []string, sDefault string)
(sInput string, tEnd bool) {
oBufReader := bufio.NewReader(os.Stdin)
for {
print("\n" + sPrompt)
vLine, _, _ := oBufReader.ReadLine()
sInput = strings.ToLower(string(vLine))
if sInput == "end" {
return "", true
}
if sInput == "" {
sInput = sDefault
}
// check for valid input //
for _, sVal := range asValid {
if sInput == sVal {
return sInput, false
}
}
}
}
这就是 sPrompt 的构造方式(不是为了优化):
if sDefault != "" {
for len(sPrompt) < 67 {
sPrompt += " "
}
sPrompt += sDefault
for iBack := 20 + len(sDefault); iBack > 0; iBack-- {
sPrompt += "\b"
}
}