Swift의 Struct 구조체 사용 방법 총정리

Swift에서 Struct(구조체)의 정의, 문법, 사용 방법을 알아보세요


Swift의 Struct 구조체 사용 방법 총정리

Swift에서 Struct(구조체)의 정의와 기본 사용 방법

Struct(구조체)는 하나 이상의 변수, 상수, 메서드 등을 캡슐화하여 하나의 사용자 정의 데이터 타입을 만드는 데 사용된다. Struct는 값 타입으로 작동하므로, 변수에 값을 할당하거나 함수에 전달할 때 복사가 이루어진다.

Struct는 Class와 달리 상속을 지원하지 않는다.

Struct의 기본 문법은 다음과 같다.

struct Person {
  var name: String
  var age: Int
}
 
let person = Person(name: "John", age: 30)
 
print(person.name) // John
print(person.age) // 30

Struct의 값 타입 특성

Struct는 값 타입이기 때문에 인스턴스를 다른 변수에 할당하거나 함수의 매개변수로 전달할 때 복사본이 생성된다.

var person1 = Person(name: "John", age: 30)
var person2 = person1 // person1의 복사본 생성
 
person2.name = "Jane" // person2의 name 프로퍼티 변경
 
print(person1.name) // John
print(person2.name) // Jane

Struct의 초기화 메서드

Struct는 초기화 메서드를 사용해 인스턴스를 생성할 때 프로퍼티의 초기값을 설정할 수 있다. 생략이 가능하며, 연산과정을 통해 초기값을 설정할 필요가 있을때 사용한다.

struct Person {
  var name: String
  var age: Int
 
  init(name: String, birthYear: Int) {
    self.name = name
    self.age = 2025 - birthYear // 현재 연도에서 출생년도를 빼서 나이를 계산
  }
}
 
let user = User(name: "홍길동", birthYear: 1995)
print(user.age)  // 출력: 30

Struct의 mutating 메서드

Struct의 프로퍼티를 변경하는 메서드는 mutating 키워드를 사용해야 한다.

struct Person {
  var name: String
  var age: Int
 
  mutating func updateName(newName: String) {
    name = newName
  }
}
 
var person = Person(name: "John", age: 30)
person.updateName(newName: "Jane")
 
print(person.name) // Jane

Nested Struct (중첩 구조체)

Struct 안에 또 다른 Struct를 정의하여 활용도를 높일 수 있다.

struct Address {
    var city: String
    var zipCode: String
}
 
struct Person {
    var name: String
    var address: Address
}
 
let person = Person(name: "Jane", address: Address(city: "Seoul", zipCode: "12345"))
print(person.address.city)