ji_iin
iOSLog
ji_iin
전체 방문자
오늘
어제
  • 분류 전체보기 (56)
    • Swift (8)
    • iOS (6)
    • 알고리즘 (34)
    • CS (3)
    • 회고 (3)
    • 제품리뷰 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 정렬
  • Python
  • 알고리즘개념
  • 그래프이론
  • ios
  • 대기업코테
  • 백준
  • 깊이우선탐색
  • 회고
  • 프로그래머스
  • Bye2023
  • 브루트포스 알고리즘
  • 깊은복사와 얕은복사
  • 파이썬
  • 자바
  • 수학
  • 개발회고
  • 알고리즘
  • 그래프탐색
  • 너비우선탐색
  • 공식문서
  • swiftUI
  • 구조체와 클래스
  • 2022년 회고
  • django
  • SWiFT
  • opional
  • 백트래킹
  • 재귀
  • 다이나믹 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ji_iin

iOSLog

Swift

[Swift] 구조체(struct) 공부하기!

2021. 8. 29. 15:01

처음 swift를 접했을 때 struct가 뭐지? 자바를 먼저 썼던 나는 class랑 뭐가 다르지 하며 궁금해했는데

공부를 해보니 사용법은 거의 유사하나 성능 및 쓰임새가 다른데,

간략히 설명하면 ( Pingu님 블로그 정리자료 참고 )

 

공통점

1. 둘 다 값을 저장할 수 있는 프로퍼티를 선언할 수 있으며

2. 생성자를 사용할 수 있고,

차이점

- Class는 참조 타입이라 같은 클래스의 인스턴스 변수를 선언하고 값을 할당한 후 하나의 값을 변경하면 같은 참조를 한 변수도 변경된다.

- Struct는 값 타입이며 새로운 변수를 할당할 때 마다 새로운 구조체가 할당된다. ( 각각 값이 존재해서 영향을 미치지 X )

 


 

구조체는 그럼 어떻게 사용할까?

설명은 주석을 참고해주세요 !

struct Town {
    //변수
    let name: String
    var city: [String]
    var citizens: [String: Int]
    
    //생성자
    init(name: String, city: [String], citizens: [String: Int]){
        //self로 구조체의 변수를 간단히 접근
        self.name = name
        self.city = city
        self.citizens = citizens
    }
    
    //함수
    func welcome(){
        print("Welcome to \(name) !")
    }
}

var Gyeonggi = Town(name: "경기도", city: ["성남시", "파주시", "수원시", "안산시"], citizens: ["홍길동": 20, "박듀듀": 19, "김옥수수": 29])
//Gyeonggi.name = "서울시" let으로 선언했기 때문에 값이 변하지 않으므로 error

//구조체의 배열 프로퍼티에 값을 추가할 수도 있다!
Gyeonggi.city.append("용인시")
Gyeonggi.citizens["최니니"] = 24

print(Gyeonggi)
// Town(name: "경기도", city: ["성남시", "파주시", "수원시", "안산시", "용인시"], citizens: ["김옥수수": 29, "최니니": 24, "홍길동": 20, "박듀듀": 19])

print(Gyeonggi.welcome())
//Welcome to 경기도 !

'Swift' 카테고리의 다른 글

[Swift] 접근제어자 (Access Control)  (0) 2022.05.16
[Swift] inout parameter  (0) 2022.01.05
[Swift] 타입 캐스팅(Type Casting) - in / as 키워드  (0) 2021.11.27
[Swift] Optinoal이란? Wrapping/Unwrapping  (0) 2021.10.02
[Swift] Class(클래스)와 Struct(구조체) 차이 - 깊은복사와 얕은복사  (0) 2021.09.16
    'Swift' 카테고리의 다른 글
    • [Swift] inout parameter
    • [Swift] 타입 캐스팅(Type Casting) - in / as 키워드
    • [Swift] Optinoal이란? Wrapping/Unwrapping
    • [Swift] Class(클래스)와 Struct(구조체) 차이 - 깊은복사와 얕은복사
    ji_iin
    ji_iin
    개발성장일지🐥

    티스토리툴바