Структури можуть реалізовувати інтерфейси, що називаються протоколами у Swift. Ви можете мати параметр, змінну або поле / член, який є протоколом, і, оскільки кілька різних структур, не кажучи вже про класи, можуть реалізувати той самий протокол, як тільки ви передасте (або призначите) структуру параметру протоколу (або змінна або поле), специфіка якої структури вона могла бути "втрачена" (re: час компіляції), і таблиця свідків протоколу вступає в гру (re: час виконання).
Ви можете дізнатися більше про компонування пам'яті Swift .
Подібне відбувається в C #, з яким я більше знайомий. Структура, передана або присвоєна змінній інтерфейсу або полю / члена, розміщується в коробці, а представлення структури в коробці відповідає структурі представлень класів, а це означає, що існує віртуальний файл для віконних структур.
Я би сподівався, що і C #, і Swift здійснюватимуть прямі дзвінки, коли елемент відомий під час компіляції як структура, а також використовувати vtable-відправлення, коли під час компіляції елемент відомий лише як інтерфейс.