package main
import "fmt"
func main() {
// Объявление массива из 5 целых чисел
var numbers [5]int
// Присваивание значений
numbers[0] = 10
numbers[1] = 20
numbers[2] = 30
numbers[3] = 40
numbers[4] = 50
fmt.Println("Массив:", numbers) // [10 20 30 40 50]
fmt.Println("Первый элемент:", numbers[0]) // 10
fmt.Println("Длина массива:", len(numbers)) // 5
} package main
import "fmt"
func main() {
// Массив целых чисел (все элементы равны 0)
var numbers [5]int
fmt.Println("Массив чисел:", numbers) // [0 0 0 0 0]
// Массив строк (все элементы равны пустой строке)
var names [3]string
fmt.Println("Массив строк:", names) // [ ] (три пустые строки)
// Массив булевых значений (все элементы равны false)
var flags [4]bool
fmt.Println("Массив флагов:", flags) // [false false false false]
} package main
import "fmt"
func main() {
// Полная инициализация
numbers := [5]int{10, 20, 30, 40, 50}
fmt.Println("Полная инициализация:", numbers)
// Частичная инициализация (остальные элементы будут нулевыми)
partial := [5]int{10, 20} // [10 20 0 0 0]
fmt.Println("Частичная инициализация:", partial)
// Инициализация с указанием индексов
indexed := [5]int{1: 10, 3: 30} // [0 10 0 30 0]
fmt.Println("Инициализация с индексами:", indexed)
} package main
import "fmt"
func main() {
// Go автоматически определит длину массива
numbers := [...]int{10, 20, 30, 40, 50}
fmt.Println("Автоматическая длина:", len(numbers)) // 5
// Пустой массив
empty := [...]int{}
fmt.Println("Длина пустого массива:", len(empty)) // 0
} package main
import "fmt"
func main() {
numbers := [5]int{10, 20, 30, 40, 50}
// Чтение элементов
fmt.Println("Первый элемент:", numbers[0]) // 10
fmt.Println("Последний элемент:", numbers[4]) // 50
// Изменение элементов
numbers[2] = 35
fmt.Println("После изменения:", numbers) // [10 20 35 40 50]
// Использование переменной в качестве индекса
index := 1
fmt.Printf("Элемент с индексом %d: %d\n", index, numbers[index])
} package main
import "fmt"
func main() {
numbers := [5]int{10, 20, 30, 40, 50}
fmt.Println("Перебор с индексами:")
for i := 0; i < len(numbers); i++ {
fmt.Printf("Индекс %d: значение %d\n", i, numbers[i])
}
} package main
import "fmt"
func main() {
numbers := [5]int{10, 20, 30, 40, 50}
// Перебор с индексом и значением
fmt.Println("Перебор с for range:")
for index, value := range numbers {
fmt.Printf("Индекс %d: значение %d\n", index, value)
}
// Только значения (игнорируем индекс)
fmt.Println("\nТолько значения:")
for _, value := range numbers {
fmt.Println(value)
}
// Только индексы
fmt.Println("\nТолько индексы:")
for index := range numbers {
fmt.Println(index)
}
} package main
import "fmt"
func main() {
// Массивы можно сравнивать оператором ==
// (только если все элементы сравнимы)
arr1 := [3]int{1, 2, 3}
arr2 := [3]int{1, 2, 3}
arr3 := [3]int{1, 2, 4}
fmt.Printf("arr1 == arr2: %t\n", arr1 == arr2) // true
fmt.Printf("arr1 == arr3: %t\n", arr1 == arr3) // false
} package main
import "fmt"
// Массивы передаются по значению (создаётся полная копия)
func modifyArray(arr [5]int) {
fmt.Printf("Внутри функции (до изменения): %v\n", arr)
arr[0] = 999 // ← Это изменение затронет только копию!
fmt.Printf("Внутри функции (после изменения): %v\n", arr)
}
// Для изменения оригинала нужно передавать указатель
func modifyArrayPtr(arr *[5]int) {
fmt.Printf("Внутри функции (до изменения): %v\n", *arr)
arr[0] = 999 // ← Это изменение затронет оригинал
fmt.Printf("Внутри функции (после изменения): %v\n", *arr)
}
func main() {
numbers := [5]int{1, 2, 3, 4, 5}
fmt.Println("=== Передача по значению ===")
fmt.Printf("До вызова modifyArray: %v\n", numbers)
modifyArray(numbers)
fmt.Printf("После вызова modifyArray: %v\n", numbers) // ← Не изменилось!
fmt.Println("\n=== Передача по указателю ===")
fmt.Printf("До вызова modifyArrayPtr: %v\n", numbers)
modifyArrayPtr(&numbers)
fmt.Printf("После вызова modifyArrayPtr: %v\n", numbers) // ← Изменилось!
} package main
import "fmt"
func main() {
// Двумерный массив (матрица)
var matrix [3][3]int
// Заполнение матрицы
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
matrix[i][j] = i*3 + j + 1
}
}
fmt.Println("Матрица:")
for _, row := range matrix {
fmt.Println(row)
}
// Инициализация многомерного массива
matrix2 := [2][2]int{
{1, 2},
{3, 4},
}
fmt.Println("\nВторая матрица:")
for _, row := range matrix2 {
fmt.Println(row)
}
}