golang break语句

释放双眼,带上耳机,听听看~!

坑,以下例子中,原本以为close掉done channel后,循环会退出。但事实上会进入死循环

for {        select {        case packet := <-s.avPacketChan:            s.sendPacket(packet)        case  <-s.done: //终止channel            break        }    }

原因:
[A “break” statement terminates execution of the innermost “for”, “switch” or “select” statement.

官方文档](https://golang.org/ref/spec#Break_statements)
BreakStmt = “break” [ Label ] .
If there is a label, it must be that of an enclosing “for”, “switch” or “select” statement, and that is the one whose execution terminates (§For statements, §Switch statements, §Select statements).

L:  for i < n {      switch i {      case 5:          break L // 从L标签处开始执行      }  }

【转自慕课】https://www.imooc.com

Go

golang面试题解析

2022-3-3 1:36:40

Go

golang结构体-对象和指针-函数赋予

2022-3-3 1:37:22

搜索