슬라이스 는 메모리 섹션에 대한 포인터입니다.
따라서 슬라이스를 사용하여 연속적인 메모리 블록 범위 내의 데이터에 액세스할 수 있습니다.
일반적으로 메모리에 연속적인 간격으로 데이터를 저장할 수 있는 데이터 구조로는 배열, 벡터, 스트링 등이 있습니다.
즉, 슬라이싱은 배열, 벡터 및 문자열과 함께 사용할 수 있으며 숫자 인덱스(배열의 아래 첨자 인덱스와 유사)를 사용하여 가리키는 데이터에 액세스합니다.
예를 들어, 슬라이싱은 문자열과 함께 사용될 수 있으며, 조각은 문자열의 연속된 부분을 가리킬 수 있습니다. 이 문자열 조각은 실제로 문자열에 대한 포인터입니다. 연속된 문자열 범위를 가리키므로 문자열의 시작 위치와 끝 위치를 지정해야 합니다.
슬라이스 콘텐츠에 액세스할 때 아래 첨자 인덱스는 0부터 시작합니다.
슬라이스 의 크기는 런타임에 알려지며 배열처럼 컴파일 타임에 알려야 하는 것이 아닙니다.
위의 모호한 설명을 통해 우리는 슬라이스가 배열, 벡터 또는 문자열을 가리키는 연속 간격이라는 것을 알 수 있습니다.
슬라이스를 정의하는 구문 형식은 다음과 같습니다.
슬라이스를 정의할 때 주의해야 할 몇 가지 사항은 다음과 같습니다.
배열, 벡터 및 문자열은 메모리에 지속적으로 저장됩니다. 메모리에 문자열을 저장하는 방법은 다음과 같습니다.
Tutorials 문자열의 길이는 9, 첫 번째 문자의 첨자 인덱스는 0, 마지막 문자의 첨자 인덱스는 8임을 에서 직관적으로 알 수 있습니다.
슬라이싱을 사용하여 Tutorials 문자열의 4번째 문자부터 시작하여 5개의 연속 문자에 액세스하려면 다음과 같이 할 수 있습니다.
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
슬라이스는 함수에 대한 인수로 사용될 수도 있습니다.
슬라이스는 배열, 벡터, 문자열의 연속된 하위 집합을 참조로 함수에 전달하는 데 사용할 수 있습니다.
먼저 간단한 코드를 살펴보겠습니다
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
위의 코드에서
슬라이스는 기본적으로 변경할 수 없습니다 .
슬라이스가 원본 데이터를 가리키는 것처럼 보이지만 기본적으로 슬라이스의 요소를 변경할 수는 없습니다.
즉, 기본적으로 조각의 요소를 변경해도 원본 데이터는 영향을 받을 수 없습니다.
그러나 이것이 절대적인 것은 아닙니다. 우리가 선언하는 원본 데이터가 가변적이고 슬라이스를 정의할 때 &mut 키워드가 추가되면 슬라이스의 요소를 변경하여 원본 데이터에 영향을 줄 수 있습니다.
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
위 코드에서 볼 수 있듯이 원본 데이터가 변경 가능하고 슬라이스 선언 시 &mut 키워드를 추가하면 슬라이스가 변경 가능합니다.
18. Rust 열거 Enum (0) | 2024.11.20 |
---|---|
17. Rust 구조 (Struct) (0) | 2024.11.15 |
15. Rust는 차용(빌려줌) - Borrowing (0) | 2024.11.15 |
14. Rust 소유권 (0) | 2024.11.15 |
13. Rust 배열 (0) | 2024.11.15 |