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

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

    Множество методов типа – это множество всех методов, которые могут быть вызваны относительно значения этого типа.

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

    Множество методов значения пользовательского типа включает в себя все методы этого типа, принимающие приемник по значению, – методы, принимающие указатель, не входят в это множество. Для вызова метода, принимающего указатель на приемник, достаточно просто вызвать этот метод относительно адресуемого значения (то есть относительно переменной, разыменованного указателя, элемента массива или среза, или адресуемого поля структуры). То есть вызов value.Method(), где Method() требует указатель на приемник, а value – адресуемое значение, компилятор Go будет интерпретировать как (&value).Method().

    Множество методов типа *Count включает три метода: Increment(), Decrement() и IsZero(), тогда как множество методов типа Count включает единственный метод – IsZero(). Все эти методы могут быть вызваны относительно указателя типа *Count и значения типа Count, если оно указано в адресуемой форме.

    Множество методов типа *Part включает четыре метода: LowerCase(), UpperCase(), String() и HasPrefix(), а множество методов типа Part включает только методы String() и HasPrefix(). Однако методы LowerCase() и UpperCase() могут вызываться относительно адресуемых значений типа Part.

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

    Для значений больших типов или значений, которые должны изменяться в методе, следует предусматривать передачу приемника по указателю.

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


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