Go tests
7.37K subscribers
283 photos
92 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥полезные ит-каналы

https://yangx.top/Golang_google - Golang программирование

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golang_jobsgo - go chat jobs
加入频道
Forwarded from Golang news
📌 Уроки Golang с нуля /#13 - Оператор Switch.

Вышел Новый урок из нашего курса, в нем мы поговорим о Операторе Switch в Go.

Оператор switch обычно используется для описания действий, выполняемых программой в тех случаях, когда переменной назначаются определенные значения. Следующий пример показывает, как в подобной ситуации можно использовать операторы if:

Пять паттернов использования операторов switch
Базовый switch с default кейсом
Оператор switch запускает первый case (кейс), равный выражению условия.
Кейсы оцениваются сверху вниз, останавливаясь, когда кейс подходит.
Если ни один кейс не совпадает и есть default кейс, выполняются его утверждения.

switch time.Now().Weekday() {
case time.Saturday:
fmt.Println("Сегодня суббота.")
case time.Sunday:
fmt.Println("Сегодня воскресенье.")
default:
fmt.Println("Сегодня будничный день.")
}

В отличие от C и Java, выражения case не обязательно должны быть константами.

Без выражения условия
Switch без условия аналогичен switch true.

// пропущенное выражение условия означает "true"
switch hour := time.Now().Hour(); {
case hour < 12:
fmt.Println("Доброе утро!")
case hour < 17:
fmt.Println("Добрый день!")
default:
fmt.Println("Добрый вечер!")
}

Кейс - список
В Go в качестве кейса можно использовать список значений - если выражение условия совпадает с одним из элементов списка, тогда кейс считается совпавшим:


func WhiteSpace(c rune) bool {
switch c {
case ' ', '\t', '\n', '\f', '\r':
return true
}
return false
}

Fallthrough (проваливание в следующий кейс)
Оператор fallthrough передает управление следующему кейсу.

Он может использоваться только как заключительное утверждение в выражениях кейса.

switch 2 {
case 1:
fmt.Println("1")
fallthrough
case 2:
fmt.Println("2")
fallthrough
case 3:
fmt.Println("3")
}

Вывод:


2
3
Выход с break

Оператор break завершает выполнение самого внутреннего оператора for, switch или select.

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


Loop:
for _, ch := range "a b\nc" {
switch ch {
case ' ': // пропускаем пробел
break
case '\n': // break на newline символе
break Loop
default:
fmt.Printf("%c\n", ch)
}
}
Вывод:


a
b

На символе a выполняется default кейс. На пробеле оператор break производит выход из switch. Далее на символе b выполняется default кейс. Далее на символе новой строки (newline - \n) происходит выход к метке Loop и выход из for range цикла.

Порядок исполнения
Сначала выражение switch оценивается один раз.
Затем case выражения оцениваются слева направо и сверху вниз:
первое, равное выражению switch, запускает выполнение операторов соответствующего case,
другие case пропущены.

// Foo печатает и возвращает n.
func Foo(n int) int {
fmt.Println(n)
return n
}

func main() {
switch Foo(2) {
case Foo(1), Foo(2), Foo(3):
fmt.Println("Первый case")
fallthrough
case Foo(4):
fmt.Println("Второй case")
}
}

Вывод:


2
1
2
Первый case
Второй case


🎞 Смотреть

Gonews
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код ?

package main

import "fmt"

func sum(a, b any) any {
return a + b
}

func main() {
fmt.Println(sum(2, 3))
}


Ответ

@golangtests
Что выведет код ?

package main

import (
"fmt"
)

func main() {
i := -5
j := +5
fmt.Printf("%+d %+d", i, j)
}

Ответ

@golangtests
Что выведет код ?
Anonymous Quiz
27%
+5 +5
64%
-5 +5
2%
-5 -5
7%
0 0
Что выведет код ?

package main

import (
"fmt"
)

func main() {
var i interface{}
if i == nil {
fmt.Println("nil")
return
}
fmt.Println("not nil")
}

Ответ

@golangtests
Каким будет результат выполнения кода?
Anonymous Quiz
45%
[7 0 5 6]
48%
[7 6 5]
7%
[7 2 6 5]
Что выведет код ?

package main

import (
"fmt"
)

func main() {
var x int
lstArray := []int{1, 2, 3}
x, lstArray = lstArray[0], lstArray[1:]
fmt.Println( x, lstArray)
}


Ответ

@golangtests
Что выведет код ?
Anonymous Quiz
3%
2 [3]
11%
1 [1,2,3]
77%
1 [2,3]
10%
Error
🔍Что выведет код ?

package main

import (
"fmt"
)

func main() {
x := [2]int{1, 2}
r := [...]int{1, 2}
fmt.Println(x == r)
}


Ответ

@golangtests
Что выведет код ?
Anonymous Quiz
33%
False
49%
True
15%
Compile time error
3%
Run time error
Что выведет код ?

Пишите ответ в комментариях
👇

@golangtests
⚡️Маст-хэв список для программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования.
Лучший способ получать свежие обновлении и следить за трендами в разработке.

Машинное обучение: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
C#: t.me/csharp_ci
C/C++/ t.me/cpluspluc
Data Science: t.me/data_analysis_ml
Devops: t.me/devOPSitsec
Go: t.me/Golang_google
Базы данных: t.me/sqlhub
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Linux: t.me/+A8jY79rcyKJlYWY6
Big Data: t.me/bigdatai
Хакинг: t.me/linuxkalii
Тестирование: https://yangx.top/+F9jPLmMFqq1kNTMy
Java: t.me/javatg

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy

Папка машинное обучение: https://yangx.top/addlist/_FjtIq8qMhU0NTYy

📕 Бесплатные Книги для программистов: https://yangx.top/addlist/YZ0EI8Ya4OJjYzEy

🎞 YouTube канал: https://www.youtube.com/@uproger

😆ИТ-Мемы: t.me/memes_prog

🇬🇧Английский: t.me/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код ?

Пишите ответ в комментариях 👇

@golangtests
Что выведет код ?

package main

func main() {
for counter, i := 0, 0; i < 3; i++ {
defer func() {
counter++
print(counter)
}()
}
}

📌 Ответ

@golangtests