首页 > 解决方案 > 将标准输入复制到缓冲区

问题描述

我想将一个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
}

标签: gobuffer

解决方案


推荐阅读