DevGang
Авторизоваться

Go / Golang - структуры данных (массивы, срезы и карты)

Массивы

Array представляет собой набор/последовательность значений одного типа. Массивы в Go аналогичны массивам на других языках. Давайте посмотрим, как объявить массив в Go, ниже приведен пример:

var value1 [5]int

var value2 [3]string

Вы также можете инициализировать массивы с заранее определенными значениями.

var value1 = [5]int { 11, 22, 33, 44, 55}

value2 := [3]string{ "This is " ,"Golang" , "Blog series"}
//Initializing with short variable declaration operator

Вы можете получить доступ ко всем элементам массива, используя цикл for. Ниже приведен фрагмент кода:

var numArr = [5] int {24,76,45,33,65}

for i:=0; i< len(numArr); i++ {
   fmt.Println("Value is :",numArr[i])
}

Выше функция len() используется для определения размера массивов.

Примечание. Массивы передаются функции как значения. То есть передаем его копию.

Срезы

Slice в Go очень похож на массив. Массивы имеют фиксированный размер, но срезы имеют динамический размер. Срезы могут удвоить свой текущий размер, чтобы добавить больше значений. Срезы хранят элементы аналогичного типа.

Срезы объявляются также просто как массив, но они не указывают размер. Ниже приведен пример этого:

var sliceValues1 [ ]int 

var sliceValues2 [ ]string

Для добавления значений в срез мы используем функцию append(). Давайте посмотрим фрагмент кода, в котором мы инициализируем фрагмент и добавляем к нему дополнительные значения.

var intSlice = []int {1,2,3,4,5,6,7}
intSlice = append(intSlice,8)

fmt.Println("Length : ", len(intSlice)) /*Prints length of slice*/
fmt.Println("Capacity :" ,cap(intSlice)) /*Prints capacity of slice*/

intSlice = append(intSlice,9,10,11) //You can append multiple values too
fmt.Println(intSlice) //Prints slice after appending multiple values

В приведенном выше фрагменте len() дает нам текущую длину среза cap() дает нам его общую емкость.

Мы можем создать фрагмент фрагмента, используя приведенный ниже код:

sliceVal := []int{10,20,30,40,50,60}

sliceVal1 := sliceVal[0:4] // It creates a slice of 10,20,30,40 

fmt.Println(sliceVal1)

Важно отметить, что фрагменты передаются по ссылке в Go.

Карты

Maps в Go используются для хранения пар ключ-значение и не допускают идентичных ключей. Давайте посмотрим, как объявить карту в приведенном ниже фрагменте кода:

var animals map[int]string

В приведенном выше фрагменте ключ имеет тип int, а значение - строковый тип.

Вы должны инициализировать карту при ее объявлении, иначе это будет нулевая карта, и вы не можете добавлять элементы на карту с нулевым значением. Давайте посмотрим, как инициализировать карту в Go.

var animals map[int]string {
       1 : "Tiger" ,
       2 : "Lion" ,
       3 : "Elephant" ,
       4 : "Giraffe", //The comma is a must after the last key
}

Карту можно создать с помощью функции make(). Функция make() создает инициализированную карту. Ниже приведен фрагмент кода для ее создания:

prices := make(map[string]int)
prices["Item1"] = 240
prices["Item2"] = 350
prices["Item3"] = 150

Приведенную выше карту цен можно повторить следующим образом:

for item, price := range prices {
    fmt.Println(item , ":>" ,price)
}

Вы можете удалить ключ с помощью встроенной функции delete()

delete(prices, "Item1")

Обратите внимание: Карты - это справочные типы. Поэтому, когда Map назначается переменной, если в переменную вносятся какие-либо изменения, она также изменяет карту.

#Golang
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

В подарок 100$ на счет при регистрации

Получить