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

Параметр-структура в Go

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

Выведем возраст из переданной записи функцией show:

package main import "fmt" type User struct { Name string Age int } func show(u User) { fmt.Println(u.Age) } func main() { client := User{Name: "ann", Age: 20} show(client) // выведет 20 }

Внутри show имя u содержит копию client. Поля читают через точку, как у обычной переменной структуры.

Вернуть одно поле можно функцией func с тем же типом параметра:

package main import "fmt" type User struct { Name string Age int } func func(u User) int { return u.Age } func main() { client := User{Name: "max", Age: 30} fmt.Println(func(client)) // выведет 30 }

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

type Item struct { Title string Price int } one := Item{Title: "book", Price: 12}

Напишите функцию func с параметром Item, которая возвращает поле Price. Выведите результат для one.

Напишите функцию func с параметром User, которая меняет поле Name внутри на "copy" и печатает его. Проверьте, что имя в исходной переменной снаружи не меняется.

Скажите, копия или общий экземпляр попадает в параметр при передаче структуры.

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