array 배열형
array
- 동일한 타입의 여러 값을 묶어 하나의 복합 타입(compound type)으로 만드는 자료형
- 튜플과 달리 동일한 데이터타입의 원소만 가질 수 있다!
- 고정된 길이를 가지며 길이 수정 불가
선언 방법
- 대괄호로 원소값들을 묶으며, 각 원소는 쉼표로 구분한다.
- compound type 이므로
{:?}
로 출력한다.
1
2
3
4
| let arr = [1, 2, 3, 4, 5];
println!("{:?}", arr);
>> [1, 2, 3, 4, 5]
|
- 명시적으로 데이터타입을 어노테이션 할 때에는 변수측에
[데이터타입; 원소개수]
와 같이 선언한다.
1
2
3
4
| let arr: [u8; 5] = [1, 2, 3, 4, 5];
println!("{:?}", arr);
>> [1, 2, 3, 4, 5]
|
- 동일한 값을 n개 가지는 배열은
[데이터타입; 개수]
와 같은 형식으로 간단하게 선언할 수 있다.
1
2
3
4
| let arr = [3; 5];
println!("{:?}", arr);
>> [5, 5, 5, 5, 5]
|
- 서로 다른 데이터타입의 원소를 가질 수 없다.
1
2
3
| let arr = ['가', 3, 3.14];
>> error: could not compile `datatype` (bin "datatype") due to 1 previous error; 2 warnings emitted
|
사용 방법
- 원소에 접근할 때에는 대괄호 안에 인덱스 번호를 입력하는
bracket syntax
를 사용한다.
1
2
3
4
| let arr: [u8; 5] = [1, 2, 3, 4, 5];
println!("{:?}", arr[0] + arr[4]);
>> 6
|
- 다수의 원소에 한 번에 접근할 때에는 슬라이싱
[i..j]
을 이용할 수 있다.
1
2
3
4
5
6
7
8
| let arr: [u8; 5] = [1, 2, 3, 4, 5];
println!("{:?}", &arr[0..3]);
>> [1, 2, 3]
println!("{:?}", &arr[2..]);
>> [3, 4, 5]
println!("{:?}", &arr[..2]);
>> [1, 2]
|
- 유효 범위를 벗어난 원소 접근은 런타임 패닉을 발생시킨다.
1
2
3
4
| let arr: [u8; 5] = [1, 2, 3, 4, 5];
println!("{:?}", &arr[7]);
>> index out of bounds: the length is 5 but the index is 7
|
Reference
https://doc.rust-kr.org/ch03-02-data-types.html
https://doc.rust-lang.org/book/ch03-02-data-types.html
Comments