티스토리 뷰

Programming Language/Rust

[Rust] 구조체

SdardewValley 2021. 3. 10. 17:43
반응형

구조체는 다른 타입의 값들로 구성이 가능하다. 각 데이터에 이름을 부여해서 값의 의미를 표현할 수 있다.

 

구조체를 정의하는 방법은 "struct 구조체의 이름 {데이터1 이름: 데이터1, 데이터2 이름: 데이터, ... }"이다. 중괄호 안의 데이터를 field라고 부른다.

 

구조체를 정의
구조체의 인스턴스 생성

구조체는 "키: 값"의 나열이다. 키는 필드의 이름, 값은 필드에 저장할 데이터이다. 위의 예시에서 알 수 있듯 구조체의 인스턴스를 생성할 때 정의한 순서를 지킬 필요는 없다.

 

구조체의 값을 읽는 방법

구조체에서 값을 읽기 위해서 마침표(.)를 사용한다. 구조체.필드의_이름 방식으로 데이터를 읽어오면 된다.

가변 인스턴스의 필드 변경

가변 인스턴스의 경우 필드의 값의 변경이 가능하다.

 

특정한 필드만이 가변성을 가지지 않고 인스턴스 자체가 가변 인스턴스이다. 러스트는 필드의 일부만 가변성을 가지게 할 수 없다. 

 

User 인스턴스 생성을 위한 함수

구조체의 새 인스턴스를 생성하는 함수이다. User 구조체는 미리 선언되어 있어야 한다. 그리고 함수는 새 인스턴스를 리턴하도록 해야한다.

 

📌 필드 초기화 단축 문법(field init shorthand syntax)

User 인스턴스 생성을 위한 함수

매개변수와 구조체의 필드 이름이 동일한 경우 필스 초기화 단축 문법을 사용하여 필드 이름만 입력해도 된다.

 

📌 구조체 갱신 문법(struct update syntax)

구조체 갱신 문법을 사용한 코드

새 인스턴스를 생성할 때 이미 존재하는 인스턴스와 필드 값이 겹치는 것이 있다면 사용 가능하다. 기존 인스턴스와 다른 값들만 작성해주고 겹치는 것은 "..기존_인스턴스_이름"을 추가해 주면 된다.

 

🌱 튜플 구조체(tuple structs)

 

튜플 구조체는 튜플 형태의 구조체이다. 정의할 때 이름은 필요하지만, 필드의 이름은 적지 않고 타입만 적는다.

 

튜플 구조체 정의
튜플 구조체로 새 인스턴스 생성

튜플 구조체를 정의할 때는 "struct 이름(필드1의 타입, 필드2의 타입, ...);" 방식으로 작성한다. 그리고 새로운 인스턴스를 생성할 때 각 자리의 타입의 데이터를 넣어주면 된다.

 

Color와 Point는 struct의 이름을 제외하고는 같지만, 다른 구조체이다. Color 타입을 사용하는 코드에 Point를 사용할 수는 없다.

 

튜플 구조체의 데이터 값을 읽는 방법

이전 글에서 보면 튜플에서 튜플_이름[인덱스 번호]로 데이터를 읽었다. 하지만 튜플 구조체는 이와는 다르다. 튜플 구조체에서는 튜플_구조체_이름.인덱스_번호 방식으로 데이터에 접근한다. 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함