[Swift] 구조체(Struct), 어떤 경우 사용하나요?

Oni·2023년 10월 25일
0

기술면접

목록 보기
2/13
post-thumbnail

1. 구조체(Struct)

구조체는 값(vlaue)타입의 데이터 구조를 정의하는데 사용된다.
또한, 구조체는 복사(copy)되어 전달되고 수정될 때 원본 데이터에 영향을 주지 않는다.


2. 어떤 경우에 사용하는가

2-1. 간단한 데이터 모델링

간단한 데이터 타입을 표현하기에 좋아, 좌표나 색상과 같은 작은 데이터 단위를 나타낼 때 사용할 수 있다.

struct Point {
    var x: Int
    var y: Int
}

2-2. 복사가 필요한 경우

구조체는 값 타입이므로 할당, 전달 및 복사 시 값 자체가 복사된다.

var pointA = Point(x: 1, y: 2)
var pointB = pointA // pointA의 값이 복사되어 pointB에 할당됨
pointB.x = 5
print(pointA.x) // 출력: 1
print(pointB.x) // 출력: 5

2-3. 값 타입이 필요한 경우

구조체는 값(value) 타입이므로 함수나 메서드의 매개변수로 사용될 때 값이 복사되어 전달된다. 이는 예상치 못한 부작용을 방지하고 함수 호출 동안 안전한 동작을 보장할 수 있다.

struct Size {
    var width: Int
    var height: Int
}

func area(size: Size) -> Int {
    return size.width * size.height
}

let rectangleSize = Size(width: 10, height: 5)
let calculatedArea = area(size: rectangleSize) // 함수의 매개변수로 구조체 전달

2-4. 불변성을 유지해야 하는 경우

구조체의 프로퍼티는 기본적으로 불변(let)이며, 구조체 인스턴스를 수정하려면 mutating 키워드를 사용해야 한다. 이는 불변성을 유지하기에 좋다.

struct Temperature {
    var celsius: Double
    var fahrenheit: Double {
        return celsius * 9 / 5 + 32
    }
    
    mutating func setFahrenheit(_ newValue: Double) {
        celsius = (newValue - 32) * 5 / 9
    }
}

var temperature = Temperature(celsius: 25.0)
temperature.setFahrenheit(77.0) // 불변성을 유지하면서 값을 변경할 수 있음

2-5. 컴퓨터 성능과 메모리 효율을 고려해야 하는 경우

구조체는 간단한 데이터를 저장할 때 일반적으로 클래스보다 메모리 사용이 더 효율적이다. 따라서 메모리 효율을 고려해야 하는 경우에 유용하다.


💡 요약하면,
구조체는 간단한 데이터 모델링, 값 복사 및 불변성 유지 등의 상황에서 주로 사용된다. 또한 값 타입이 필요한 경우나 메모리 효율을 중시해야 할 때 구조체를 사용하는 것이 좋다.

profile
하지만 나는 끝까지 살아남을 거야!

0개의 댓글