Skip to content

Latest commit

 

History

History
54 lines (44 loc) · 2.36 KB

File metadata and controls

54 lines (44 loc) · 2.36 KB

В языке программирования Go break внутри case блока select или switch приводит к выходу из области видимости select или switch, а не из цикла for, в котором они могут быть использованы.

Switch

В switch, break завершает выполнение блока switch, после чего выполнение программы продолжается со следующего оператора после switch.

switch x {
case 1:
    fmt.Println("Case 1")
    break // Выход из switch
case 2:
    fmt.Println("Case 2")
    // Здесь не требуется break, так как Go автоматически прерывает выполнение case
default:
    fmt.Println("Default case")
}

Select

select используется для работы с каналами и позволяет ожидать несколько операций каналов, выполняя блок кода для первой завершившейся операции. break внутри case select приводит к выходу из select.

for {
    select {
    case <-chan1:
        fmt.Println("Received from chan1")
        break // Выход из select, но не из for
    case <-chan2:
        fmt.Println("Received from chan2")
        // Здесь break не требуется по той же причине, что и в switch
    }
}

Важно отметить, что в данном контексте break не приведет к выходу из цикла for. Если вам нужно прервать выполнение цикла for из case в select или switch, вы можете использовать метки (labels) и break с указанием этой метки.

Пример с меткой:

Loop: // Метка
for {
    select {
    case <-chan1:
        fmt.Println("Received from chan1")
        break Loop // Прерывает цикл for, а не только select
    case <-chan2:
        fmt.Println("Received from chan2")
    }
}

В этом примере break Loop прервет не только select, но и внешний цикл for, благодаря использованию метки Loop.