Swift Structs Tutorial

View more categories:

1- What is Struct?

In Swift, Struct (structure) is a special type of value, it creates a variable, to store multiple values, but the values are related to each other.
For example, information about an employee include:
  • Employee number
  • Employee name
  • Position
You can create 3 variables to store the information above of employee. However you can create a Struct to store all three information on in a single variable.
Swift uses struct keyword to declare a Struct.
import Foundation

struct Employee {

   var empNumber:String
   var empName:String
   var position:String

   // Constructor.
   init(empNumber:String, empName:String, position:String) {
      self.empNumber = empNumber;
      self.empName = empName;
      self.position = position;

For example, use Struct:
import Foundation

func test_EmployeeStruct()     {
    // Create a variable from Employee struct
    let john = Employee(empNumber:"E01",empName: "John",position: "CLERK")
    print("Emp Number: " + john.empNumber)
    print("Emp Name: " + john.empName)
    print("Emp Position: " + john.position)
Edit main.swift:
import Foundation

Running the example:

2- Struct vs Class

Struct is commonly used to create an object to store the value, while the class is using  more diversely.
  1. Struct does not allow inheritance from a class or another struct.
  2. But Struct allows inheritance from one or more  Protocol.
If struct appears as a parameter in a function (or method), it is passed as a value. Meanwhile, if the instance of a class appears as a parameter in a function (or method) it is passed as a reference.
import Foundation

// A class
class MyClass  {
    var name: String = "Abc"

// A struct
struct MyStruct {
    var name: String = "Abc"

// A function, 2 parameters
// First parameter is a class, and second parameter is a struct.
func passToMe( myClass: MyClass, myStruct: MyStruct)   {
    // Change value to 'name' field.
    myClass.name = "New Name"
    // Can not change value to field of this struct.
    // (It is a copy,its fields become constants and can not be changed.
    // myStruct.name = "New Name" ***

func test_passToMe()   {
    // An object of MyClass.
    var  mc = MyClass()
    print("mc.name = \(mc.name)") // Abc
    // A value of MyStruct.
    var ms = MyStruct()
    print("Call passToMe function")
    // Pass to passToMe() function.
    // Note: The first parameter does not require a Label.
    passToMe( mc, myStruct: ms)
    print("mc.name = \(mc.name)") // New Name
Running the example:

3- Constructor of Struct

Struct can have Constructors but do not have Destructor 
Here are few notes for the Constructor:
  1. You can write one or more constructor for struct.
  2. In the constructor you must assign values to all fields that don't have value.

4- Methods and properties of Struct

Struct can have methods and properties.
import Foundation

struct Book  {
   // Property
   var title:String    {
      get    {
        return self.title;
      set (value)   {
        self.title = value
   // Property
   var author:String    {
       get {
        return self.author;
       set(value)  {
           self.author = value;
   // Constructor.
   init(  title:String, author:String)  {
      self.title = title;
      self.author = author;
   // Method.
   func getInfo() -> String     {
       return "Book Title: " + self.title + ", Author: " + self.author;
See more about properties at:
  • TODO: LINK??

5- Struct and Protocol

Struct can inherit from one or more Protocols.
  • TODO:

View more categories: