go - 将标准输入复制到缓冲区
问题描述
我想将一个os.Stdin
字符串复制到缓冲区,以检查用户输入的文本(例如“hibye”)并针对它放置一个 if 语句。
我当前的代码只处理简单的标准输入标准输出复制操作(无缓冲区):
func interact(c net.Conn) {
// Read from Reader and write to Writer until EOF()
copy := func(r io.ReadCloser, w io.WriteCloser) {
defer func() {
r.Close()
w.Close()
}()
n, err := io.Copy(w, r)
if err != nil {
log.Printf("[%s]: ERROR: %s\n", c.RemoteAddr(), err)
log.Println(n)
}
}
go copy(c, os.Stdout)
go copy(os.Stdin, c)
}
问题:实现使用缓冲区来控制传递的字符串的最有效方法是什么?
不好的例子(失败的尝试):
buf := make([]byte, 1024)
go copy (os.Stdin, []byte(buf))
if buf == "hibye" {
do stuff
}
解决方案
推荐阅读
- excel - 使用带有 MS Edge 的 WScript 下载多个文件会留下打开的 Edge 选项卡
- swift - 从选择器 SwiftUI 中取消选择项目
- python - 交换/转置矩阵列
- javascript - 在对象数组中按一个属性分组并计算另一个属性中的关键字出现次数?
- mysql - MySQL:如何跟踪视图中的更改
- html - Django模板没有加载没有错误
- python - 使用调试工具运行服务器问题
- javascript - 使用语言环境阿拉伯语进行 date.toLocaleDateString 转换在 Chrome 和 firefox 中产生不同的结果
- r - 为具有少量观察的组添加点到 geom_density_ridges
- r - 查找向量是否是另一个向量的子集的方法,包括该向量在 R 中具有重复值的顺序