Можно ли в Go модифицировать массив (изменять его размер или элементы)?

Ответ

Это зависит от того, что понимать под «модификацией»:

1. Изменение элементов массива

Да, можно. Вы можете изменять значение любого элемента массива по его индексу.

arr := [3]int{10, 20, 30}
arr[0] = 100 // OK
fmt.Println(arr) // Вывод: [100 20 30]

2. Изменение размера массива

Нет, нельзя. В Go массив имеет фиксированный размер, который определяется в момент его создания и является частью его типа. Например, типы [3]int и [4]int — это два разных, несовместимых типа.

// Попытка присвоить массив другого размера приведет к ошибке компиляции
var arr [3]int
// arr = [4]int{} // Ошибка: cannot use [4]int{} (type [4]int) as type [3]int in assignment

Решение: Слайсы (Slices)

Для коллекций, размер которых нужно изменять динамически, в Go используются слайсы (slices). Слайс — это гибкая и мощная обертка над массивом, которая позволяет добавлять элементы и изменять свой размер.

slice := []int{10, 20, 30}

// Изменение элемента (как в массиве)
slice[0] = 100

// Добавление нового элемента (изменение размера)
slice = append(slice, 40)

fmt.Println(slice) // Вывод: [100 20 30 40]