코틀린에서는 어느 문장 앞에든 레이블을 붙일 수 있지만, break와 continue에는 구체적으로 루프 앞에 붙은 레이블만 사용할 수 있다. 그렇지 않으면 컴파일러가 오류를 보고한다. 레이블 이름은 배열이나 함수와 마찬가지로 임의의 식별자가 될 수 있다.
자바 vs. 코틀린 코틀린과 자바는 레이블 정의와 사용 문법이 다르다.
loop@ while(true) break@loop // 코틀린 loop: while(true) break loop // 자바
레이블을 사용하면 (레이블을 사용하는 다른 경우도 있지만) break와 continue를 when 식 안에서 쓰면서 제어를 옮길 대상 루프를 지정할 수 있다. 이로 인해 앞 절에서 살펴본 수 추측 프로그램을 다음과 같이 작성할 수 있다.
import kotlin.random.*
fun main() {
val num = Random.nextInt(1, 101)
loop@ while (true) {
val guess = readLine()!!.toInt()
val message = when {
guess < num -> "Too small"
guess > num -> "Too big"
else ->break@loop // 정상
}
println(message)
}
println("Right: it's $num")
}