Go에서 break 문은 스위치 / 선택에서 끊어 집니까?
모든 경우에 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.
스위치 블록에서. Golang 자체 코드에는 검사 할 수있는 많은 예제가 있습니다 ( 내부 브레이크 와 외부 브레이크 비교 ).
이것을 설명해야합니다.
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")
}
}
}
스주를 인쇄합니까?
http://play.golang.org/p/GOvnfI67ih
스위치 블록 만 종료합니다.
switch에 break를 사용하는 또 다른 방법은 fallthrough 문과 함께 사용하는 것입니다. 올바른 상황에서 올바르게 사용하려면 약간의 창의성이 필요할 수 있지만 사용 가능한 조합 일 수 있습니다.
다음은 간단한 예입니다.
a := 25
fallThrough := true
switch {
case a > 10 :
fmt.Println("a>10")
if fallThrough != true {
break
}
fallthrough
case a > 20:
fmt.Println("a>20")
}
참고 URL : https://stackoverflow.com/questions/11104085/in-go-does-a-break-statement-break-from-a-switch-select
'Programing' 카테고리의 다른 글
WHERE 절의 참조 별명 (SELECT에서 계산 됨) (0) | 2020.07.17 |
---|---|
Android 용 Eclipse에서 LogCat / Console을 활성화하는 방법은 무엇입니까? (0) | 2020.07.17 |
`$ HTTP_RAW_POST_DATA`가 더 이상 사용되지 않는다는 경고 (0) | 2020.07.17 |
ECMAScript 6에서 JSON 파일을 가져 오는 방법은 무엇입니까? (0) | 2020.07.17 |
C ++에서 코드 스 니펫의 실행 시간을 계산하는 방법 (0) | 2020.07.17 |