【发布时间】:2021-04-05 11:52:11
【问题描述】:
在 Go 中,我正在尝试创建一个函数来读取和处理下一行输入:
// Read a string of hex from stdin and parse to an array of bytes
func ReadHex() []byte {
r := bufio.NewReader(os.Stdin)
t, _ := r.ReadString('\n')
data, _ := hex.DecodeString(strings.TrimSpace(t))
return data
}
不幸的是,这只在第一次调用时才有效。它捕获第一行,但无法捕获通过标准输入管道传输的后续行。
我怀疑,如果在每个后续调用中都使用相同的持久 bufio.Reader() 对象,它会起作用,但如果不在每个函数调用中手动传递它,我就无法实现这一点。
【问题讨论】:
-
闭包在这里有什么帮助?如果您有一个包含阅读器的结构,并使用 ReadHex 作为方法,则可能会更容易。
-
我会试试的 - 谢谢
-
@BurakSerdar 接受的答案显示了如何使用闭包 - 我只是无法让它工作。