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

Копирование в Go

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

Скопируем пользователя и изменим возраст только в первой переменной:

type User struct { Name string Age int } u := User{Name: "ann", Age: 20} twin := u u.Age = 21 fmt.Println(u.Age) fmt.Println(twin.Age)

На экране 21 и 20. Имена совпадают, но числа разошлись, потому что twin хранит свою копию полей. Так же ведут себя поля строки и логического типа внутри структуры.

Проверим копию после смены строки:

type User struct { Name string Age int } a := User{Name: "bob", Age: 30} b := a a.Name = "bobby" fmt.Println(b.Name)

Дана структура:

type User struct { Name string Age int } u := User{Name: "ann", Age: 20}

Скопируйте u в twin, измените Age в u на 99 и выведите возраст в обеих переменных.

Даны переменные:

type Pair struct { X int Y int } one := Pair{X: 1, Y: 2}

Запишите one в two, поставьте X в one равным 10 и выведите two.X.

Скажите, изменится ли поле Name у копии, если поменять его только в оригинале после присваивания структуры целиком.

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