使用Golang读取时将默认值设置为stdin

时间:2016-12-03 12:03:52

标签: go stdin reader

我正在编写一种配置编辑器。 我的目标是允许用户使用cli编辑复杂的配置文件。

每一件事在创作上都很有效,但我对版本部分有一点疑问。

当用户进行编辑时,我想读取stdin以获取新值,我希望前一个结果出现在stdin中,并且可以直接从stdin编辑。

小例子: - 用户运行:./ my-tool编辑“NAME” - 我们在stdout上询问:“输入新名称:” - 我希望前一个结果出现在stdin中,用户可以删除它或编辑它。如果前一个结果是“测试”我希望测试在控制台上打印,那么用户可以按“del”并将“test”更改为“tes”

我希望我足够清楚......有可能吗?感谢

我的实际代码:

func getInput(txt, def string) string {
    //def = former value/default value
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter '" + txt + "' of target: ")
    os.Stdin.Write([]byte(def)) //Not working user can't edit this ...
    tmp, err := reader.ReadString('\n')

    if err != nil {
        fmt.Println(err)
        return _getInput(txt, def)
    }

    tmp = strings.TrimSpace(tmp)
    fmt.Println(tmp)

    return tmp
}

0 个答案:

没有答案