-
Выберите строки, которые выведет программа.
package main import ( "fmt" ) func main() { a := 2 switch a { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") break default: fmt.Println("default") } }
- one
- two
- three
- default
Ответ с пояснением
- one
- two
- three
- default
Объяснение:
break
прерывает выполнение веткиcase
. Но поскольку он находится в конце ветки, он не возымеет никакого эффекта.Кстати, есть линтеры, которые ругались бы на такую конструкцию
break
как на бессмысленную. -
Выберите строки, которые выведет программа.
package main import ( "fmt" ) func main() { a := 2 switch a { case 1: fmt.Println("one") case 2: fmt.Println("two") fallthrough case 3: fmt.Println("three") fallthrough default: fmt.Println("default") } }
- one
- two
- three
- default
Ответ с пояснением
- one
- two
- three
- default
Объяснение:
fallthrough
приводит к выполнению следующей веткиcase
/default
. -
Выберите строки, которые выведет программа.
package main import ( "fmt" ) func main() { a := 5 switch { case a > 1: fmt.Println("a > 1") fallthrough case a > 2: fmt.Println("a > 2") break case a > 3: fmt.Println("a > 3") default: fmt.Println("default") } }
- a > 1
- a > 2
- a > 3
- default
Ответ с пояснением
- a > 1
- a > 2
- a > 3
- default
Объяснение:
fallthrough
приводит к выполнению следующей веткиcase
/default
.break
в конце веткиcase
не имеет никакого эффекта, поскольку предназначен для преждевременного выхода из ветки. -
Что выведет код?
package main import ( "fmt" ) func main() { m := map[string]int{ "one": 1, } if value, ok := m["one"]; ok { fmt.Println("one exists!") } fmt.Println(value) }
- 0
- 1
- "one exists!", 0
- "one exists!", 1
- Код не скомпилируется
- Код запаникует
Ответ с пояснением
- 0
- 1
- "one exists!", 0
- "one exists!", 1
- Код не скомпилируется
- Код запаникует
Объяснение:
Область видимости переменной
value
ограничивается конструкциейif
. Поэтому компилятор укажет на необъявленную переменнуюvalue
. -
Что выведет код?
package main import ( "fmt" ) func main() { m := map[string]int{ "one": 1, } value := 5 if value, ok := m["one"]; ok { fmt.Println("one exists!") } fmt.Println(value) }
- 1
- 5
- "one exists!", 1
- "one exists!", 5
- Код не скомпилируется
- Код запаникует
Ответ с пояснением
- 1
- 5
- "one exists!", 1
- "one exists!", 5
- Код не скомпилируется
- Код запаникует
Объяснение:
В данном коде объявлено две разные переменные с именем
value
- одна на уровнеmain
, и другая - в области видимости конструкцииif
.Конструкция
if
объявляет две переменные -value
иok
. Однако переменнаяvalue
, объявленная внутри блокаif
, не используется.Язык Go запрещает объявление неиспользованных переменных по причине борьбы с ошибками, а также в целях повышения скорости компиляции - https://golang.org/doc/faq#unused_variables_and_imports . Поэтому данный код не скомпилируется
-
Что выведет код?
package main import ( "fmt" ) func main() { m := map[string]int{ "one": 1, } value := 5 if value, ok := m["one"]; ok { fmt.Println(value) } fmt.Println(value) }
- 1
- 5
- 1, 1
- 1, 5
- Код не скомпилируется
- Код запаникует
Ответ с пояснением
- 1
- 5
- 1, 1
- 1, 5
- Код не скомпилируется
- Код запаникует
Объяснение:
В данном коде объявлено две разные переменные с именем
value
- одна на уровнеmain
, и другая - в области видимости конструкцииif
.Конструкция
if
объявляет две переменные -value
иok
. Переменнаяvalue
внутриif
равна результату инициализации значениемm["one"]
, однако после завершения конструкцииif
эта переменная становится недоступна. -
Что выведет код?
package main import ( "fmt" ) func main() { m := map[string]int{ "zero": 0, } value := 5 if value, ok := m["one"]; ok { fmt.Println(value) } fmt.Println(value) }
- 0
- 5
- 0, 0
- 0, 5
- Код не скомпилируется
- Код запаникует
Ответ с пояснением
- 0
- 5
- 0, 0
- 0, 5
- Код не скомпилируется
- Код запаникует
Объяснение: В данном коде объявлено две разные переменные с именем
value
- одна на уровнеmain
, и другая - в области видимости конструкцииif
.Конструкция
if
объявляет две переменные -value
иok
. Переменнаяvalue
внутриif
равна результату инициализации значениемm["one"]
(0, поскольку ключ"one"
отсутствует вm
), однако после завершения конструкцииif
эта переменная становится недоступна. Переменнаяok
равнаfalse
, поскольку ключ отсутствует в словаре. Как следствие, конструкцияif
не выполняется и мы видим только вывод внешней переменнойvalue
. -
Что выведет код?
package main import ( "fmt" ) var a = 3 func main() { a := 4 fmt.Println(a) }
- 3
- 4
- Код не скомпилируется
- Код запаникует
Ответ с пояснением
- 3
- 4
- Код не скомпилируется
- Код запаникует
Объяснение:
В данном коде объявлено две разные переменные с именем
a
- одна в глобальной области видимости, и другая - в области видимости функцииmain
.Мы определяем и выводим значение переменной, объявленной на уровне функции
main
-
Что выведет код?
package main import ( "fmt" ) var a = 3 func main() { fmt.Println(a) }
- 3
- Код не скомпилируется
- Код запаникует
Ответ с пояснением
- 3
- Код не скомпилируется
- Код запаникует
Объяснение:
В данном коде корректно объявлена переменная с именем
a
в глобальной области видимости. Внутри функцииmain
выводится её значение. -
Что выведет код?
package main import ( "fmt" ) a := 3 func main() { fmt.Println(a) }
- 3
- Код не скомпилируется
- Код запаникует
Ответ с пояснением
- 3
- Код не скомпилируется
- Код запаникует
Объяснение:
Конструкцию
:=
можно использовать только для объявления переменных в локальной области видимости. В глобальной области видимости переменную можно объявить только черезvar
This repository has been archived by the owner on Dec 5, 2021. It is now read-only.