Условные конструкции

Последнее обновление: 20.12.2017

Условные конструкции проверяют истинность некоторого условия и в зависимости от результатов проверки позволяют направить ход программы по одному из путей.

if...else

Конструкция if принимает условие - выражение, которое возвращает значение типа bool. И если это условие истинно, то выполняется последующий блок инструкций.

package main
import "fmt"

func main() {
	
	a := 6
	b := 7
	if a < b {
		fmt.Println("a is less than b")
	}
}

Условие ставится после оператора if. В данном случае проверяется, меньше ли значение переменной a чем значние переменой b. Поскольку в данном случае значение переменной a действительно меньше значения переменной b, то есть условие возвращает true, то будет выполнять последующий блок кода, который выводит на консоль сообщение.

Если необходимо задать альтернативную логику, которая выполняется, в случае если условие неверно, то добавляется выражение else:

package main
import "fmt"

func main() {
	
	a := 6
	b := 7
	if a < b {
		fmt.Println("a меньше b")
	}else{
		fmt.Println("a больше b")
	}
}

Таким образом, если условное выражение после оператора if истинно, то выполняется блок после if, если ложно - выполняется блок после else.

Если необходимо проверить несколько альтернативных вариантов, то можно добавить выражения else if:

package main
import "fmt"

func main() {
	
	a := 8
	b := 8
	if a < b {
		fmt.Println("a меньше b")
	}else if a > b{
		fmt.Println("a больше b")
	} else{
		fmt.Println("a равно b")
	}
}

Таким образом, если выражение после if истинно, то срабатывает блок if. Иначе проверяется выражение после else if. Если оно истинно, то выполняется блок else if. Если оно ложно, то выполняется блок else.

Выражений else if может быть множество:

if a ==9 {
	fmt.Println("a = 9")
}else if a == 8{
	fmt.Println("a = 8")
} else if a == 7{
	fmt.Println("a == 7")
}

switch

Конструкция switch проверяет значение некоторого выражения. С помощью операторов case определяются значения для сравнения. Если значение после оператора case совпадает со значением выражения из switch, то выполняется код данного блока case.

package main
import "fmt"

func main() {
	
	a := 8
	switch(a) {
		case 9: 
			fmt.Println("a = 9")
		case 8: 
			fmt.Println("a = 8")
		case 7: 
			fmt.Println("a = 7")
	}
}

В качестве выражения конструкция switch использует переменную a. Ее значение последовательно сравнивается со значениями после операторов case. Поскольку переменная a равна 8, то будет выполняться блок case 8: fmt.Println("a = 8"). Остальные блоки case не выполняются.

При этом после оператора switch мы можем указывать любое выражение, которое возвращает значение. Например, операцию сложения:

a := 7
switch(a + 2) {
	case 9: 
		fmt.Println("9")
	case 8: 
		fmt.Println("8")
	case 7: 
		fmt.Println("7")
}

Также конструкция switch может содержать необязательных блок default, который выполняется, если ни один из операторов case не содержит нужного значения:

package main
import "fmt"

func main() {
	
	a := 87
	switch(a) {
		case 9: 
			fmt.Println("a = 9")
		case 8: 
			fmt.Println("a = 8")
		case 7: 
			fmt.Println("a = 7")
		default: 
			fmt.Println("значение переменной a не определено")
	}
}

Также можно указывать после оператора case сразу несколько значений:

a := 5
switch(a) {
	case 9: fmt.Println("a = 9")
	case 8: fmt.Println("a = 8")
	case 7: fmt.Println("a = 7")
	case 6, 5, 4: 
		fmt.Println("a = 6 или 5 или 4, но это не точно")
	default: 
		fmt.Println("значение переменной a не определено")
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850