Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmSrSl 235 of 350 menu
◀ ▶

Срез структур в Go

Срез может хранить несколько значений одной структуры. Литерал среза выглядит как у чисел или строк, только каждый элемент записывают литералом структуры в фигурных скобках. Длина среза равна числу таких элементов.

Соберем срез пользователей и выведем его:

type User struct { Name string Age int } people := []User{ {Name: "ann", Age: 20}, {Name: "bob", Age: 30}, } fmt.Println(people)

Обход циклом for range дает копию элемента. Чтобы изменить поле внутри среза, берут индекс и пишут через него, а не через имя из заголовка цикла:

type User struct { Name string Age int } people := []User{ {Name: "ann", Age: 20}, {Name: "bob", Age: 30}, } people[0].Age = 21 fmt.Println(people[0].Age)

На экране 21. Запись people[i].Age меняет элемент в срезе. Если в цикле взять for _, person := range people и менять person.Age, срез не обновится, потому что person - копия элемента.

type User struct { Name string Age int } people := []User for i := range people { people[i].Age = 22 } fmt.Println(people[0].Age)

Дан тип User с Name и Age. Создайте срез из двух пользователей и выведите его.

Дан следующий срез:

type User struct { Name string Age int } people := []User{ {Name: "ann", Age: 20}, {Name: "bob", Age: 30}, }

Поставьте возраст первого элемента 25 и выведите people[0].

Дан следующий срез:

type User struct { Name string Age int } people := []User

Обойдите его циклом с индексом, увеличьте Age на 1 и выведите элемент с индексом 0.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить