Массивы имеют фиксированный размер. Срез (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 Георгий Сергей]
Читайте также:
- Основы языка Go: литералы срезов
- Основы языка Go: массивы (arrays)
- Основы языка Go: структуры (struct)
Комментариев нет:
Отправить комментарий