четверг, 10 января 2019 г.

Основы Go: срезы (slices)

Массивы имеют фиксированный размер. Срез (slice) - это гибкое отображение элементов массива с возможностью динамического изменения размера. На практике срезы более распространены, чем массивы.

Тип []T обозначает срез с элементами типа T.

Следующее выражение создает срез из пяти первых элементов массива a:

a[0:5]

Пример среза:

package main

import "fmt"

func main() {
  primes := [6]int{2, 3, 5, 7, 11, 13}

  var s []int = primes[1:4] // срез
  fmt.Println(s)
}

Вывод:

[3 5 7]

Срезы это как указатели на массивы

Срез не хранит никаких данных, он всего лишь обозначает секцию нижележащего массива.

Изменения элементов среза приводят к модификации соответствующих элементов его нижележащего массива.

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

package main

import "fmt"

func main() {
  names := [4]string{
    "Евгений",
    "Иван",
    "Георгий",
    "Сергей",
  }
  fmt.Println(names)

  a := names[0:2]
  b := names[1:3]
  fmt.Println(a, b)

  b[0] = "XXX"
  fmt.Println(a, b)
  fmt.Println(names)
}

Вывод:

[Евгений Иван Георгий Сергей]
[Евгений Иван] [Иван Георгий]
[Евгений XXX] [XXX Георгий]
[Евгений XXX Георгий Сергей]


Читайте также:


Комментариев нет:

Отправить комментарий