Swift里面 ,Struct 是值类型 , 而Class 是引用类型.
class 能继承,而 struct 不能。
再之,在 swift 中 struct 是值,而 class 是引用。所谓值,struct 一旦生成是不能变的,如果有一个方法改变了自己的属性,这个方法需要标为 mutating,修改时会产生一个新值去替代旧值(这一步可能会被编译器优化,并不一定会真的产生一个新 struct)。而 class 无论怎么传递都是同一个对象。
值和引用的区别使 struct 不会有多线竞争的问题,class 会有。
有些 protocol 只能被类遵守。