Параметры метода в Go
Кроме получателя у метода могут быть обычные параметры. Их пишут в скобках после имени получателя, так же как у функции: имя и тип, несколько параметров подряд или через запятую с общим типом.
Сделаем метод, который дописывает суффикс к имени пользователя:
type User struct {
Name string
Age int
}
func (u User) WithSuffix(suffix string) string {
return u.Name + suffix
}
Создадим значение и вызовем метод:
u := User{Name: "ann", Age: 20}
fmt.Println(u.WithSuffix("-dev"))
На экране "ann-dev". При вызове сначала
передается значение получателя, затем аргументы
из скобок. Порядок в объявлении: получатель,
потом параметры метода.
Несколько параметров перечисляют через запятую. Типы могут совпадать, тогда последний тип можно написать один раз для группы имен:
type User struct {
Name string
Age int
}
func (u User) Range(minAge, maxAge int) bool {
return u.Age >= minAge && u.Age <= maxAge
}
Создадим значение и проверим диапазон:
u := User{Name: "ann", Age: 20}
fmt.Println(u.Range(18, 25))
Дана структура:
package main
import "fmt"
type User struct {
Name string
Age int
}
u := User{Name: "bob", Age: 30}
Добавьте метод с одним строковым параметром,
который возвращает имя и переданный текст
через пробел, и выведите результат для
"team".
Даны переменные:
package main
type Pair struct {
A int
B int
}
p := Pair{A: 3, B: 7}
Запишите метод с двумя параметрами типа
int, который возвращает сумму полей
и обоих аргументов, и выведите вызов с
1 и 2.
Скажите, где в объявлении метода стоит получатель относительно остальных параметров.