Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 从go中的tcp连接读取数据是否需要for循环?_For Loop_Go_Tcp - Fatal编程技术网

For loop 从go中的tcp连接读取数据是否需要for循环?

For loop 从go中的tcp连接读取数据是否需要for循环?,for-loop,go,tcp,For Loop,Go,Tcp,有一个func来处理tcp连接: for { select { case conn := <-listen: go handleClient(conn) ... } func handleClient(client net.Conn) { for { // ...read from conn // at some point return return } } 用于{ 挑选{ case c

有一个func来处理tcp连接:

for {
    select {
    case conn := <-listen:
        go handleClient(conn)
    ...
}

func handleClient(client net.Conn) {
    for {
       // ...read from conn
       // at some point return
       return
    }
}
用于{
挑选{

case conn:=处理连接的服务器的常见模式可能是

func handleClient(conn net.Conn) {
    r := bufio.NewReader(conn)
    for {
        line, err := r.ReadBytes(byte('\n'))
        switch err {
        case nil:
            break
        case io.EOF:
        default:
            fmt.Println("ERROR", err)
        }
        // do something with the data, in this case echo it back
        conn.Write(line)
    }
}
for{}循环是从连接中读取多行数据所必需的

如果handleClient可以在一个块中读取所有输入,则不需要循环


因此,您是对的,{}并不总是必需的,但它取决于读取的数据。通常,这样的循环是读取数据的最佳方式

您需要在
默认:
条件下返回