Ответ
Плюсы:
- Value type (копируется при передаче, thread-safe)
- Нет проблем с retain cycles
- Автоматически генерирует init
- Лучшая производительность для небольших данных
- Подходит для immutable данных
Минусы:
- Нет наследования (только протоколы)
- Нет деинициализатора (deinit)
- Может быть неэффективна для больших данных (из-за копирования)
- Не поддерживает полиморфизм
// Пример
struct Point {
var x: Int
var y: Int
func distance(to point: Point) -> Double {
// расчет расстояния
}
}
// Использование
var p1 = Point(x: 0, y: 0)
let p2 = p1 // Копирование
p1.x = 10 // p2 не изменится