Практика на встраивание в Go
Дана структура:
package main
import "fmt"
type Address struct {
City string
}
type User struct {
Address
Name string
}
client := User{
Address: Address{City: "oslo"},
Name: "leo",
}
Выведите город поднятым полем и имя.
Даны переменные:
package main
import "fmt"
type Address struct {
City string
}
func (a Address) Tag() string {
return a.City
}
type User struct {
Address
Name string
}
u := User{
Address: Address{City: "berlin"},
Name: "mia",
}
Выведите результат поднятого метода у u.
Дан следующий код:
package main
import "fmt"
type Address struct {
City string
}
func (a Address) Tag() string {
return a.City
}
type User struct {
Address
Name string
}
func (u User) Tag() string {
return u.Name
}
u := User{
Address: Address{City: "oslo"},
Name: "ann",
}
Выведите оба варианта подписи: короткий и через встроенный тип.
Объявите User со встроенным *Address,
задайте указатель в литерале, измените
город через поднятое поле и выведите его
через Address.
Дана структура:
package main
import "fmt"
type Address struct {
City string
}
type Contact struct {
Email string
}
type Profile struct {
Address
Contact
Name string
}
p := Profile{
Address: Address{City: "rome"},
Contact: Contact{Email: "sam@mail.example"},
Name: "sam",
}
Выведите все поднятые строковые поля и имя.
Скажите, что произойдет при чтении поднятого
поля у User со встроенным *Address,
если указатель не задавали.