Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmFnAP 252 of 350 menu
◀ ▶

Параметр-массив в Go

Давайте теперь будем передавать в функцию массив. Длина входит в тип параметра: в скобках типа пишут число элементов, например [3]int. Функция получает отдельную копию, и правки внутри не меняют переменную снаружи.

Попробуем изменить первый элемент внутри функции func:

package main import "fmt" func func(nums [3]int) { nums[0] = 99 } func main() { data := [3]int{1, 2, 3} func(data) fmt.Println(data[0]) // выведет 1 }

На экране по-прежнему 1. Запись внутри func затронула только копию. Переменная data в main не изменилась.

Прочитать элемент копии и вернуть его можно функцией func, не меняя оригинал:

package main import "fmt" func func(nums [3]int) int { return nums[2] } func main() { data := [3]int{4, 5, 6} fmt.Println(func(data)) // выведет 6 }

Массив и срез здесь разные типы. В параметр [3]int нельзя передать []int и нельзя передать массив другой длины.

Дан следующий массив:

vals := [2]int{7, 8}

Напишите функцию func с параметром [2]int, которая возвращает элемент с индексом 1. Выведите результат для vals.

Дан следующий массив:

data := [3]int{1, 2, 3}

Напишите функцию func с параметром [3]int, которая увеличивает элемент с индексом 0 на 1 только внутри. Вызовите с data и выведите data[0] после вызова.

Скажите, почему параметр [3]int и [2]int считаются разными типами.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить