Спецификация языка программирования Go
Объявления методов
Метод - это функция с приемником.Объявление метода привязывает идентификатор, имя метода к методу и связывает метод с базовым типом получателя.
Получатель указывается с помощью раздела дополнительных параметров, предшествующего имени метода.В этом разделе параметров должен быть объявлен единственный невариантный параметр - получатель.Его тип должен иметь форму T или * T (возможно, с использованием скобок), где T - это имя типа.Тип, обозначаемый T, называется базовым типом получателя;это не должен быть указатель или тип интерфейса, и он должен быть определен в том же пакете, что и метод.Считается, что метод связан с базовым типом, а имя метода отображается только в селекторах для типа T или * T.
Нет.Это может быть любой тип, отличный от указателя или типа интерфейса.
Например, используя string
в качестве базового типа,
package main
import (
"fmt"
"strings"
)
type Caser interface {
Upper() string
Lower() string
}
type Str string
func (s Str) Upper() string {
return strings.ToUpper(string(s))
}
func (s Str) Lower() string {
return strings.ToLower(string(s))
}
func main() {
str := Str("Forty-Two")
fmt.Println(str)
up := str.Upper()
fmt.Println(up)
lo := str.Lower()
fmt.Println(lo)
}
Playground: https://play.golang.org/p/9RDRTftqWot
Вывод:
Forty-Two
FORTY-TWO
forty-two