Оператор switch

Aleks404

Новичок
Пользователь
Фев 21, 2022
7
0
1
Всем привет. Начал изучать GO, хочу все тщательно разобрать.
Никак не могу понять данный пример.
Кому не сложно объясните пожалуйста.

x := 8
switch y := x % 2; y {
case 0: x -= 1
case 1: x += 1
} fmt.Println(x)
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Никак не могу понять данный пример.
C-подобный:
package main

import "fmt"

func main() {
    x := 8  // объявление переменной x
    // проверка условия y := x % 2 с помощью оператора switch
    // если значение x четное, то y = 0, если нечетное - то y = 1
    switch y := x % 2; y {
        case 0: x -= 1 // если y = 0 (значение x четное), то уменьшаем значение x на 1
        case 1: x += 1 // если y = 1 (значение x нечетное), то увеличиваем значение x на 1
    }
    fmt.Println(x)  //вывод значения x в консоль
}
Этот код можно переписать без использования дополнительной переменной y:
C-подобный:
package main

import "fmt"

func main() {
    x := 8  // объявление переменной x
    // проверка условия значения переменной x на четность с помощью оператора switch    
    switch x % 2 {
        case 0: x -= 1 // если значение x четное, то уменьшаем его на 1
        case 1: x += 1 // если значение x нечетное, то увеличиваем его на 1
    }
    fmt.Println(x)  //вывод значения x в консоль
}
 

Aleks404

Новичок
Пользователь
Фев 21, 2022
7
0
1
C-подобный:
package main

import "fmt"

func main() {
    x := 8  // объявление переменной x
    // проверка условия y := x % 2 с помощью оператора switch
    // если значение x четное, то y = 0, если нечетное - то y = 1
    switch y := x % 2; y {
        case 0: x -= 1 // если y = 0 (значение x четное), то уменьшаем значение x на 1
        case 1: x += 1 // если y = 1 (значение x нечетное), то увеличиваем значение x на 1
    }
    fmt.Println(x)  //вывод значения x в консоль
}
Этот код можно переписать без использования дополнительной переменной y:
C-подобный:
package main

import "fmt"

func main() {
    x := 8  // объявление переменной x
    // проверка условия значения переменной x на четность с помощью оператора switch   
    switch x % 2 {
        case 0: x -= 1 // если значение x четное, то уменьшаем его на 1
        case 1: x += 1 // если значение x нечетное, то увеличиваем его на 1
    }
    fmt.Println(x)  //вывод значения x в консоль
}
В итоге

fmt.Println(x) // x - при выводе в консоль будет равно 7?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
В итоге

fmt.Println(x) // x - при выводе в консоль будет равно 7?
Да.
 

Aleks404

Новичок
Пользователь
Фев 21, 2022
7
0
1
 

Форум IT Специалистов