Uso de Struct e Class em Swift

Amanda Paiva
2 min readMar 28, 2023

Em Swift, tanto struct quanto class são usadas para criar tipos de dados. A principal diferença entre as duas é que struct é um tipo de valor (value type), enquanto class é um tipo de referência (reference type).

Em termos simples, uma struct é uma cópia independente de um objeto, enquanto uma class aponta para uma referência compartilhada. Quando uma struct é passada para uma função ou atribuída a uma variável, é criada uma cópia separada da mesma.

Uma structé um tipo de valor, o que significa que quando você atribui uma instância de uma estrutura a uma variável ou passa uma estrutura para uma função, uma cópia completa da estrutura é criada. As struct são geralmente usadas para representar tipos de dados mais simples, como um ponto em um plano cartesiano ou uma data.

Por outro lado, uma class é um tipo de referência, o que significa que quando você atribui uma instância de uma classe a uma variável ou passa uma classe para uma função, uma referência à instância da classe é criada.

O tipo class geralmente é usado para representar tipos de dados mais complexos, como um objeto em um jogo ou uma conta de usuário em um aplicativo.

Aqui está um exemplo simples de como criar uma struct e uma class em Swift:

// Definindo uma struct
struct Person {
var name: String
var age: Int
}

// Instanciando de struct
print(person1.name) // Lucas
print(person2.name) // Amanda


// Definindo uma class
class Car {
var brand: String
var model: String
init(brand: String, model: String) {
self.brand = brand
self.model = model
}
}

// Instanciando uma Class
var car1 = Car(brand: "Toyota", model: "Corolla")
var car2 = car1 // Criando uma referência compartilhada
car2.brand = "Honda"
print(car1.brand) // Honda
print(car2.brand) // Honda

Usamos struct quando precisar criar um tipo de valor simples e que não precise de herança, ou se você quiser garantir que os objetos sejam independentes.

Usamos class quando precisar criar tipos mais complexos que podem ser compartilhados entre diferentes instâncias e que precisam suportar herança.

--

--