Answers:
结构可以实现接口,在Swift中称为协议。您可以具有作为协议的参数,变量或字段/成员,并且由于将多个结构传递(或分配)给协议参数(或变量或字段),则可能丢失了该结构的详细信息(例如:编译时),并且协议见证表开始起作用(例如:运行时)。
您可以了解有关Swift内存布局的更多信息。
我更熟悉的C#也发生了类似的情况。将对传递或分配给接口变量或字段/成员的结构进行装箱,并且该装箱的表示形式与类表示形式的表示形式匹配,这意味着存在用于装箱的结构的vtable。
我希望C#和Swift在项目在编译时被称为结构时都可以直接调用,而在编译时将该项目仅称为接口时可以使用vtable dispatch。