Structs dapat mengimplementasikan antarmuka, yang disebut protokol di Swift. Anda dapat memiliki parameter, variabel, atau bidang / anggota yang merupakan protokol, dan, karena beberapa struct yang berbeda, belum lagi kelas, dapat mengimplementasikan protokol yang sama, setelah Anda lulus (atau menetapkan) struct ke parameter protokol (atau variabel atau bidang), spesifik yang mungkin menjadi "hilang" (re: waktu kompilasi) dan tabel saksi protokol ikut bermain (re: runtime).
Anda dapat mempelajari lebih lanjut tentang tata letak memori Swift .
Hal serupa terjadi pada C #, yang lebih saya kenal. Sebuah struct yang diteruskan atau ditugaskan ke variabel antarmuka atau bidang / anggota dikotak, dan representasi kemas dari struct cocok dengan representasi kelas, yang berarti ada vtable untuk struct kotak.
Saya mengharapkan C # dan Swift untuk melakukan panggilan langsung ketika item diketahui pada waktu kompilasi sebagai struct, dan untuk menggunakan pengiriman vtable ketika pada waktu kompilasi, item tersebut hanya dikenal sebagai antarmuka.