Массивы в Go
#GOМассивы на языке программирования Golang или Go очень похожи на другие языки программирования. В программе иногда нам нужно хранить набор данных одного типа, например, список оценок учеников. Такой тип коллекции хранится в программе с использованием массива. Массив — это последовательность фиксированной длины, которая используется для хранения однородных элементов в памяти. Из-за их фиксированной длины массив не так популярен, как Slice in Go.
В массиве вам разрешено хранить ноль или более нуля элементов в нем. Элементы массива индексируются с помощью оператора индекса [] с их позицией, начинающейся с нуля, это означает, что индекс первого элемента — массив [0], а индекс последнего элемента — массив [len (массив) -1]. ,

Создание и доступ к массиву
В языке Go массивы создаются двумя различными способами:
- Использование ключевого слова var : в языке Go массив создается с использованием ключевого слова var определенного типа с именем, размером и элементами.Синтаксис:
Var array_name[length]Type
or
var array_name[length]Typle{item1, item2, item3, ...itemN}
- Важные моменты:
В языке Go массивы изменчивы, так что вы можете использовать синтаксис array [index] слева от присваивания, чтобы установить элементы массива с заданным индексом.Var array_name[index] = element

- Вы можете получить доступ к элементам массива, используя значение индекса или цикл for.
- В языке Go тип массива одномерный.
- Длина массива фиксирована и неизменна.
- Вам разрешено хранить повторяющиеся элементы в массиве.
Пример:
// Перейти к программе, чтобы проиллюстрировать, как
// создаем массив с помощью ключевого слова var
// и доступ к элементам
// массив с использованием значения индекса
package main
import "fmt"
func main() {
// Создание массива строкового типа
// Используем ключевое слово var
var myarr[3]string
// Элементы назначаются с использованием индекса
myarr[0] = "GFG"
myarr[1] = "GeeksforGeeks"
myarr[2] = "Geek"
// Доступ к элементам массива
// Использование значения индекса
fmt.Println("Elements of Array:")
fmt.Println("Element 1: ", myarr[0])
fmt.Println("Element 2: ", myarr[1])
fmt.Println("Element 3: ", myarr[2])
}
Выход:
Elements of Array: Element 1: GFG Element 2: GeeksforGeeks Element 3: Geek
2. Использование стенографического объявления. В языке Go массивы также могут быть объявлены с помощью стенографического объявления. Это более гибко, чем приведенная выше декларация.Синтаксис:
array_name:= [length]Type{item1, item2, item3,...itemN}

Пример:
// Перейти к программе, чтобы проиллюстрировать, как создать
// массив с кратким объявлением
// и доступ к элементам
// использование массива для цикла
package main
import "fmt"
func main() {
// Сокращенное объявление массива
arr:= [4]string{"geek", "gfg", "Geeks1231", "GeeksforGeeks"}
// Доступ к элементам
// Использование массива для цикла
fmt.Println("Elements of the array:")
for i:= 0; i < 3; i++{
fmt.Println(arr[i])
}
}
Выход:
Elements of the array: geek gfg Geeks1231
Многомерный массив
Как мы уже знаем, массивы являются одномерными, но вам разрешено создавать многомерный массив. Многомерные массивы — это массивы массивов одного типа . В языке Go вы можете создать многомерный массив, используя следующий синтаксис:
Array_name[Length1][Length2]..[LengthN]Type
Вы можете создать многомерный массив, используя ключевое слово Var или сокращенное объявление, как показано в примере ниже.
Примечание. В многомерном массиве, если ячейка не инициализируется пользователем каким-либо значением, компилятор автоматически инициализирует ее нулевым значением. На Голанге нет неинициализированной концепции.
Пример:
// Перейти к программе, чтобы проиллюстрировать
// концепция многомерного массива
package main
import "fmt"
func main() {
// Создание и инициализация
// 2-мерный массив
// Использование стенографического объявления
// Здесь нужна (,) запятая
arr:= [3][3]string{{"C#", "C", "Python"},
{"Java", "Scala", "Perl"},
{"C++", "Go", "HTML"},}
// Доступ к значениям
// массив Использование для цикла
fmt.Println("Elements of Array 1")
for x:= 0; x < 3; x++{
for y:= 0; y < 3; y++{
fmt.Println(arr[x][y])
}
}
// Создание 2-мерного
// массив с использованием ключевого слова var
// и инициализация мульти
// -мерный массив с использованием индекса
var arr1 [2][2] int
arr1[0][0] = 100
arr1[0][1] = 200
arr1[1][0] = 300
arr1[1][1] = 400
// Доступ к значениям массива
fmt.Println("Elements of array 2")
for p:= 0; p<2; p++{
for q:= 0; q<2; q++{
fmt.Println(arr1[p][q])
}
}
}
Выход:
Elements of Array 1 C# C Python Java Scala Perl C++ Go HTML Elements of array 2 100 200 300 400
Важные замечания о массиве
- В массиве, если массив не инициализирован явно, тогда значением по умолчанию этого массива является 0 .Пример:
// Перейти к программе для иллюстрации массива
package main
import "fmt"
func main() {
// Создание массива типа int
// который хранит, два элемента
// Здесь мы не инициализируем
// массив, так что значение массива
// ноль
var myarr[2]int
fmt.Println("Elements of the Array :", myarr)
}
Выход:
Elements of the Array : [0 0]
2. В массиве вы можете найти длину массива с помощью метода len (), как показано ниже:
Пример:
// Перейти к программе, чтобы проиллюстрировать, как найти
// длина массива
package main
import "fmt"
func main() {
// Создание массива
// Использование стенографического объявления
arr1:= [3]int{9,7,6}
arr2:= [...]int{9,7,6,4,5,3,2,4}
arr3:= [3]int{9,3,5}
// Находим длину
// массив с использованием метода len
fmt.Println("Length of the array 1 is:", len(arr1))
fmt.Println("Length of the array 2 is:", len(arr2))
fmt.Println("Length of the array 3 is:", len(arr3))
}
Выход:
Length of the array 1 is: 3 Length of the array 2 is: 8 Length of the array 3 is: 3
3. В массиве, если многоточие ''… '' становится видимым в месте длины, тогда длина массива определяется инициализированными элементами. Как показано в примере ниже:
Пример:
// Перейти к программе, чтобы проиллюстрировать
// понятие эллипса в массиве
package main
import "fmt"
func main() {
// Создание массива, размер которого определяется
// по количеству элементов в нем
// Используем многоточие
myarray:= [...]string{"GFG", "gfg", "geeks",
"GeeksforGeeks", "GEEK"}
fmt.Println("Elements of the array: ", myarray)
// Длина массива
// определяется по
// Использование метода len ()
fmt.Println("Length of the array is:", len(myarray))
}
Выход:
Elements of the array: [GFG gfg geeks GeeksforGeeks GEEK] Length of the array is: 5
4. В массиве вам разрешено выполнять итерации по диапазону элементов массива . Как показано в примере ниже:
Пример:
// Перейти к программе для иллюстрации
// как перебрать массив
package main
import "fmt"
func main() {
// Создание массива, размер которого
// представлен многоточием
myarray:= [...]int{29, 79, 49, 39,
20, 49, 48, 49}
// Итерация массива с использованием цикла for
for x:=0; x < len(myarray); x++{
fmt.Printf("%d\n", myarray[x])
}
}
Выход:
29 79 49 39 20 49 48 49
5. В языке Go массив имеет тип значения, а не ссылочный тип . Поэтому, когда массиву присваивается новая переменная, изменения, внесенные в новую переменную, не влияют на исходный массив. Как показано в примере ниже:
Пример:
// Перейти к программе для иллюстрации массива типов значений
package main
import "fmt"
func main() {
// Создание массива, размер которого
// представлен многоточием
my_array:= [...]int{100, 200, 300, 400, 500}
fmt.Println("Original array(Before):", my_array)
// Создание новой переменной
// и инициализируем с помощью my_array
new_array := my_array
fmt.Println("New array(before):", new_array)
// Изменить значение с индексом 0 на 500
new_array[0] = 500
fmt.Println("New array(After):", new_array)
fmt.Println("Original array(After):", my_array)
}
Выход:
Original array(Before): [100 200 300 400 500] New array(before): [100 200 300 400 500] New array(After): [500 200 300 400 500] Original array(After): [100 200 300 400 500]
6. В массиве, если тип элемента массива сопоставим, тогда тип массива также сопоставим. Таким образом, мы можем напрямую сравнивать два массива, используя оператор == . Как показано в примере ниже:
Пример:
// Перейти к программе для иллюстрации
// как сравнить два массива
package main
import "fmt"
func main() {
// Массивы
arr1:= [3]int{9,7,6}
arr2:= [...]int{9,7,6}
arr3:= [3]int{9,5,3}
// Сравнение массивов с помощью оператора ==
fmt.Println(arr1==arr2)
fmt.Println(arr2==arr3)
fmt.Println(arr1==arr3)
// Это даст и ошибку, потому что
// тип arr1 и arr4 не соответствует
/ *
arr4: = [4] int {9,7,6}
fmt.Println (arr1 == arr4)
* /
}
Выход:
true false false