Cấu trúc có thể thực hiện các giao diện, được gọi là giao thức trong Swift. Bạn có thể có một tham số, biến hoặc trường / thành viên là một giao thức và bởi vì nhiều cấu trúc khác nhau, chưa kể các lớp, có thể thực hiện cùng một giao thức đó, khi bạn chuyển (hoặc gán) một cấu trúc cho một tham số giao thức (hoặc biến hoặc trường), các chi tiết cụ thể mà cấu trúc của nó có thể đã bị "mất" (thời gian biên dịch lại) và bảng chứng kiến giao thức đi vào hoạt động (re: runtime).
Bạn có thể tìm hiểu thêm về cách bố trí bộ nhớ Swift .
Điều tương tự cũng xảy ra trong C #, mà tôi quen thuộc hơn. Một cấu trúc được truyền hoặc gán cho một biến giao diện hoặc trường / thành viên được đóng hộp và biểu diễn được đóng hộp của cấu trúc khớp với biểu diễn của lớp, có nghĩa là có một vtable cho các cấu trúc được đóng hộp.
Tôi hy vọng cả C # và Swift sẽ thực hiện cuộc gọi trực tiếp khi mục được biết tại thời điểm biên dịch dưới dạng cấu trúc và sử dụng công văn vtable khi tại thời gian biên dịch, mục này chỉ được gọi là giao diện.