Both struct and class are used to define properties to store values. Both can define methods to provide functionality and define initializers. Both can conform to protocols and be extended. Due to so many similarities they are sometimes used alternately by young developers. They are however not the same and in this article you will learn the key differences to better leverage their strengths and create even better projects.