Массив — это коллекция фиксированной длины, где все элементы имеют один тип.
Индексация начинается с 0.
var nums [3]int
fmt.Println(nums) // [0 0 0]
var nums [3]int
fmt.Println(nums) // [0 0 0]
nums := [5]int{10, 20, 30, 40, 50}
fmt.Println(nums) // [10 20 30 40 50]
fmt.Println(nums[0]) // первый элемент → 10
fmt.Println(nums[2]) // третий элемент → 30
fmt.Println(nums[len(nums)-1]) // последний элемент → 50
Через for
for i := 0; i < len(nums); i++ {
fmt.Println("Индекс:", i, "Значение:", nums[i])
}
Через range
for i, v := range nums {
fmt.Println(i, "=>", v)
}
sum := 0
for _, v := range nums {
sum += v
}
fmt.Println("Сумма элементов:", sum)
numbers := [6]int{45, 12, 78, 90, 4, 56}
min := numbers[0]
max := numbers[0]
for _, v := range numbers {
if v < min {
min = v
}
if v > max {
max = v
}
}
fmt.Println("Массив numbers:", numbers)
fmt.Println("Минимум:", min)
fmt.Println("Максимум:", max)
Что такое слайс
Слайс — это динамический массив, который может изменять длину. Слайсы содержат: • указатель на массив • длину (len) • вместимость (cap)
Литерал слайса
s := []int{1, 2, 3}
fmt.Println(s) // [1 2 3]
Через make
s2 := make([]int, 5) // длина 5, заполнен нулями
fmt.Println(s2) // [0 0 0 0 0]
## Доступ к элементам
fmt.Println(s[0]) // первый элемент → 1
fmt.Println(s[len(s)-1]) // последний элемент → 3
## Перебор слайса
for i, v := range s {
fmt.Println(i, "=>", v)
}
## Добавление элементов
s = append(s, 4, 5)
fmt.Println(s) // [1 2 3 4 5]
## Срезы срезов
sub := s[1:4] // элементы с индексами 1,2,3
fmt.Println(sub) // [2 3 4]
# Функции
Простейшие функции
func sum(a int, b int) int {
return a + b
}
func min(a int, b int) int {
if a < b {
return a
}
return b
}
func max(a int, b int) int {
if a > b {
return a
}
return b
}
func greet(name string) string {
return "Привет, " + name + "!"
}
## Вызов функций
fmt.Println("Сумма 5 + 7 =", sum(5,7))
fmt.Println("Минимум из 10 и 3 =", min(10,3))
fmt.Println("Максимум из 10 и 3 =", max(10,3))
fmt.Println(greet("Anna"))
# Структуры (Structs)
Объявление структуры
type Person struct {
Name string
Age int
}
# Срез из структур
people := []Person{
{Name: "Alice", Age: 25},
{Name: "Bob", Age: 30},
{Name: "Charlie", Age: 22},
}
# Перебор среза структур
for _, p := range people {
fmt.Println("Имя:", p.Name, "Возраст:", p.Age)
}