모든 경우에 switch
/ select
문이 자동으로 중단 된다는 것을 알고 있습니다. 다음 코드에서 궁금합니다.
for {
switch sometest() {
case 0:
dosomething()
case 1:
break
default:
dosomethingelse()
}
}
break
명령문이 for
루프 또는 switch
블록을 종료 합니까 ?
답변
“break”문은 가장 안쪽 “for”, “switch”또는 “select”문의 실행을 종료합니다.
BreakStmt = "break" [ Label ] .
레이블이있는 경우 레이블은 “for”, “switch”또는 “select”문으로 묶어야하며, 실행이 종료되는 문이어야합니다 (§For 문, §Switch 문, §Select 문).
L: for i < n { switch i { case 5: break L } }
따라서 break
예제의 switch
명령문은 “가장 안쪽”명령문을 종료합니다 .
답변
희망적으로 예시적인 예 :
loop:
for {
switch expr {
case foo:
if condA {
doA()
break // like 'goto A'
}
if condB {
doB()
break loop // like 'goto B'
}
doC()
case bar:
// ...
}
A:
doX()
// ...
}
B:
doY()
// ....
답변
예, break
내부를 끊습니다 switch
.
https://play.golang.org/p/SZdDuVjic4
package main
import "fmt"
func main() {
myloop:for x := 0; x < 7; x++ {
fmt.Printf("%d", x)
switch {
case x == 1:
fmt.Println("start")
case x == 5:
fmt.Println("stop")
break myloop
case x > 2:
fmt.Println("crunching..")
break
default:
fmt.Println("idling..")
}
}
}
0idling.. 1start 2idling.. 3crunching.. 4crunching.. 5stop Program exited.
답변
답변
이것을 설명해야합니다.
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
영원히 달려
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
다시, 영원히 실행
그러나
package main
import "fmt"
func main() {
d:
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break d
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
sjus를 인쇄 할 것입니까?
답변
스위치 블록 만 종료합니다.