немного не так. В моем воображении это выглядит как имя типа, к которому принадлежит значение интерфейсного типа, и поинтер сами данны, о котором вы сказали, а все остальное - это проверка в компайл тайме, при явном приведении, и в рантайме при использовании type assertion.
Или я что-то упустил?
В interface{} действительно поинтер на тип и данные. А вот если интерфейс не пустой, то первый поинтер - это поинтер на заполненную таблицу методов. Если почитаешь сырцы, то увидишь, что для этих двух вариантов используются разные внутрунние типы: iface и eface.
Обсуждают сегодня