close 函数官网定义如下
close函数是一个内建函数, 用来敞开channel,这个channel要么是双向的, 要么是只写的(chan<- Type)。
这个办法应该只由发送者调用, 而不是接收者。
当最初一个发送的值都被接收者从敞开的channel(下简称为c)中接管时,
接下来所有接管的值都会非阻塞间接胜利,返回channel元素的零值。
如下的代码:
如果c曾经敞开(c中所有值都被接管), x, ok := <- c, 读取ok将会失去false。

close函数再执行后chan会接管到一次, x, ok := <- c,ok失去false。

代码如下

package mainimport (    "fmt"    "github.com/gin-gonic/gin")func cWait(c <-chan int) {    v, ok := <-c    if ok {        fmt.Printf("read a int is %d\n", v)    } else {        fmt.Printf("read a error a int \n")    }}func main() {    c := make(chan int)    go cWait(c)    close(c)    router := gin.Default()    router.Run()}

输入会蕴含有一次 read a error a int