这是我一直在寻找的东西。也许将来会帮助某人。注意使用select和“ c”通道将其与退出通道结合使用
ln, err := net.Listen("tcp", ":8080") if err != nil { // handle error } defer ln.Close() for { type accepted struct { conn net.Conn err error } c := make(chan accepted, 1) go func() { conn, err := ln.Accept() c <- accepted{conn, err} }() select { case a := <-c: if a.err != nil { // handle error continue } go handleConnection(a.conn) case e := <-ev: // handle event return } }


