🟡 Средний · 2 очк. Разное / продвинутое
Что такое method set типа?
A Список полей структуры
B Набор методов, определённых для типа
C Набор интерфейсов
D Набор конструкторов
Объяснение вопроса

Method set типа - это множество методов, привязанных к типу. От него зависит, какие интерфейсы тип реализует.

Правило для получателей

  • У значения типа T в method set входят только методы с value receiver (func (t T) M()).
  • У указателя *T - и value, и pointer receiver методы.
type S struct{}
func (S) Val() {}   // value receiver
func (*S) Ptr() {}  // pointer receiver

var s S
// s.Val() и s.Ptr() работают (s автоматически адресуется для Ptr)
var p *S
// p.Val() и p.Ptr() работают

type I interface{ Val(); Ptr() }
var _ I = &s  // OK: *S имеет оба метода
var _ I = s   // Ошибка: у S нет метода Ptr в method set

Поэтому интерфейс может требовать только *T, а не T.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.