Шаг 86.
Язык программирования Go.
Методы-выражения

    На этом шаге рассмотрим методы-выражения в Go.

    Методы-выражения, как и функции, можно передавать и присваивать переменным. Метод-выражение – это функция, принимающая в первом аргументе значение типа, которому данный метод принадлежит.

/*Cоздаются четыре метода-выражения:
asStringV(), принимающий значение типа Part в единственном аргументе,
hasPrefix(), принимающий значение типа Part в первом аргументе и строку – во втором,
и методы asStringP() и lower(),
оба принимающие указатель типа *Part в виде единственного аргумента*/
asStringV := Part.String // Фактическая сигнатура: func(Part) string 
sv := asStringV(part)
hasPrefix := Part.HasPrefix // Фактическая сигнатура: func(Part, string) bool
asStringP := (*Part).String // Фактическая сигнатура: func(*Part) string
sp := asStringP(&part)
lower := (*Part).LowerCase // Фактическая сигнатура: func(*Part)
lower(&part)
fmt.Println(sv, sp, hasPrefix(part, "w"), part) 

    Архив с примерами можно взять здесь.

    Методы-выражения являются дополнительной особенностью, которая может пригодиться в необычных ситуациях.

    Все пользовательские типы, созданные в предыдущих шагах, не имеют механизма, гарантирующего допустимость данных, которыми инициализируются поля, и не имеют механизма, гарантирующего, что значению типа не будут присвоены недопустимые данные.

    Например, полям Part.Id и Part.Name могут быть присвоены любые значения.

    На следующем шаге рассмотрим типы с проверкой в Go.


Предыдущий шаг Содержание Следующий шаг