Результат метода в Go
Метод может вернуть значение, как обычная
функция. После списка параметров пишут тип
результата, а в теле используют return.
Вызов метода тогда стоит там же, где вызов
функции: в присваивании, внутри fmt.Println
или в условии.
Вернем имя пользователя строкой:
type User struct {
Name string
Age int
}
func (u User) Title() string {
return u.Name
}
Создадим значение и сохраним результат:
u := User{Name: "ann", Age: 20}
label := u.Title()
fmt.Println(label)
В label лежит "ann". Результат
метода имеет тот тип, который указан после
скобок объявления. Его можно сразу передать
дальше без промежуточной переменной.
Несколько результатов у метода записывают так
же, как у функции: типы через запятую в
объявлении и несколько значений в return:
type User struct {
Name string
Age int
}
func (u User) Summary() (string, int) {
return u.Name, u.Age
}
Создадим значение и разберем оба результата:
u := User{Name: "ann", Age: 20}
name, age := u.Summary()
fmt.Println(name, age)
Дана структура:
package main
import "fmt"
type User struct {
Name string
Age int
}
u := User{Name: "kate", Age: 19}
Добавьте метод, который возвращает только возраст, и выведите результат вызова.
Дан следующий код:
package main
type Box struct {
Weight int
}
b := Box{Weight: 4}
Запишите метод с результатом типа bool,
который сообщает, тяжелее ли коробка 3,
и выведите вызов.
Можно ли использовать результат метода сразу внутри сложения строк без отдельной переменной?