Вызов метода в Go
Вызов пишут через точку после имени значения. Слева стоит переменная или литерал структуры, справа имя метода и скобки, если нужны аргументы. Так же, как к полю, обращаются к действию, привязанному к типу этого значения.
Запишем метод подписи и вызовем его у готового пользователя:
type User struct {
Name string
Age int
}
func (u User) Title() string {
return u.Name
}
Создадим значение и вызовем метод:
u := User{Name: "ann", Age: 20}
fmt.Println(u.Title())
На экране "ann". Выражение u.Title()
читается как «у значения u возьми
результат действия Title». Скобки
обязательны даже без параметров, как у
обычной функции.
Метод можно вызвать у временного значения, если тип известен. Тогда точка стоит сразу после литерала:
type User struct {
Name string
Age int
}
func (u User) Title() string {
return u.Name
}
Вызовем метод у литерала:
fmt.Println(User{Name: "max"}.Title())
Дана структура:
package main
import "fmt"
type User struct {
Name string
Age int
}
func (u User) Title() string {
return u.Name
}
u := User{Name: "kate", Age: 19}
Выведите результат вызова у u.
Добавьте к типу Tag с полем Label
метод, который возвращает это поле, создайте
значение с "go" и выведите вызов
через точку.
Скажите, чем запись вызова метода отличается от чтения поля через точку без скобок.