Основы Go

Go Slices: append, len and cap

The list type you will use most in Go: grow it with append, cut it with [a:b], and watch out for shared memory.

  • Начальный
  • Чтение: 3 мин
  • Примеров для запуска: 1
Что вы узнаете
  • append
  • Slicing with [a:b]
  • make, len and cap
numbers[1:4]
30
11
42
13
54
The slice covers indexes 1, 2 and 3.

A growable view of an array

A slice is a view of an array that can grow. It is the list type you will use most in Go. append adds items and returns the updated slice.

numbers[1:4] takes the items at positions 1, 2 and 3. That new slice shares memory with numbers, so changing middle[0] also changes numbers[1]. make creates an empty slice with room for three items, and cap shows that room.

Главное

  1. append returns the updated slice.
  2. numbers[1:4] has the items at 1, 2 and 3.
  3. A slice shares memory with the slice it was cut from.

Пример на Go, который можно запустить

Go
Запустить код →
main.go
package main

import "fmt"

func main() {
	numbers := []int{3, 1, 4}
	numbers = append(numbers, 1, 5)
	fmt.Println(numbers, len(numbers))

	middle := numbers[1:4]
	fmt.Println(middle)

	middle[0] = 100 // a slice shares the array it was cut from
	fmt.Println(numbers)

	squares := make([]int, 0, 3)
	for i := 1; i <= 3; i++ {
		squares = append(squares, i*i)
	}
	fmt.Println(squares, len(squares), cap(squares))

	for index, value := range squares {
		fmt.Println(index, value)
	}
}
Получить кнопку запуска для этого примера Результат выполнения
[3 1 4 1 5] 5
[1 4 1]
[3 100 4 1 5]
[1 4 9] 3 3
0 1
1 4
2 9

Практика

Откройте пример в онлайн-компиляторе, измените значение или добавьте строку и попробуйте предсказать вывод до запуска. Затем намеренно сломайте код и прочитайте сообщение компилятора.

Закончили этот урок?

Отметьте его как изученный, чтобы следить за прогрессом.

Далее: Maps →

Попрактикуйтесь на задаче

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

Все задачи