Rust 언어 공부를 처음 봤다. 그 3

4146 단어 Rust

데이터 유형



데이터 유형

스칼라와 복합의 2가지의 유형이 있다.
Rust에서는 컴파일 타임에 변수 유형을 알아야합니다.
통상은 자동으로 인식하지만, 문자를 해석해 수치형으로 변환하는 경우 등은, 형태 주석을 붙일 필요가 있다.
let guess: u32 = "42".parse().expect("Not a number!");

형식 주석이 없으면 오류가 발생합니다.



Scalar Types



Integer Types




길이
Signed
Unsigned


8비트
i8
u8

16비트
i16
u16

32비트
i32
u32

64비트
i64
u64

128비트
i128
u128

arch
isize
usize


arch는 컴퓨터 아키텍처에 의해
64bit 아키텍처의 경우 64, 32bit 아키텍처의 경우 32


Number literals
Example


십진수
98_222

16진수
0xff

8진수
0o77

2진수
0b1111_0000

바이트 (u8 전용)
b'A'


'_'는 시각적인 구분 기호. 금액 표시에 사용하는 '$1,000'의','와 같은 것.

Floating-Point Types



f32와 f64의 2종류가 있다. 각각 비트 사이즈가 32bit와 64bit. 디폴트는 64bit.
fn main() {
    let x = 2.0; // f64

    let y: f32 = 3.0; // f32
}

Numeric Operations



기본적인 사칙 연산이 가능.

여기에는 모든 연산 목록이 있습니다.
fn main() {
    // addition
    let sum = 5 + 10;

    // subtraction
    let difference = 95.5 - 4.3;

    // multiplication
    let product = 4 * 30;

    // division
    let quotient = 56.7 / 32.2;

    // remainder
    let remainder = 43 % 5;
}

The Boolean Type



true와 false를 취하는 bool 형이 있다. 사이즈는 1바이트
fn main() {
    let t = true;

    let f: bool = false; // with explicit type annotation
}

샘플에서는 false시에 형태를 지정하고 있지만, 없어도 문제 없었다.

The Character Type



단일 따옴표로 문자를 사용할 수 있습니다.
문자열은 더블 따옴표입니다.
fn main() {
    let c = 'z';
    let z = 'ℤ';
    let heart_eyed_cat = '😻';
}

Compound Types



Rust에는 튜플과 배열의 두 가지가 있습니다.

The Tuple Type



다양한 유형의 값을 하나로 그룹화합니다. 크기는 고정 길이로 크기를 조절할 수 없습니다.
fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);
}

튜플에서 값을 꺼낼 때는 다음과 같이 분해합니다.
fn main() {
    let tup = (500, 6.4, 1);

    let (x, y, z) = tup;

    println!("The value of y is: {}", y);
}

마침표를 붙여 값의 인덱스를 지정하는 것으로, 직접 액세스 할 수도 있다.
fn main() {
    let x: (i32, f64, u8) = (500, 6.4, 1);

    let five_hundred = x.0;

    let six_point_four = x.1;

    let one = x.2;
}

The Array Type



배열은 모든 요소가 동일한 유형이어야합니다. 고정 길이.
fn main() {
    let a = [1, 2, 3, 4, 5];
}

유연하게 사용하려면 벡터를 사용하는 것이 좋습니다.

다음과 같이 유형과 요소 수를 설명 할 수 있습니다.
let a: [i32; 5] = [1, 2, 3, 4, 5];

다음과 같이 쓰면,
let a = [3; 5];

let a = [3, 3, 3, 3, 3];로 할 수도 있다.

Accessing Array Elements



다음과 같이 요소에 액세스 할 수 있습니다.
fn main() {
    let a = [1, 2, 3, 4, 5];

    let first = a[0];
    let second = a[1];
}

first에는 인덱스 0의 1이 들어간다.
second에는 인덱스 1의 2가 들어간다.

Invalid Array Element Access


fn main() {
    let a = [1, 2, 3, 4, 5];
    let index = 10;

    let element = a[index];

    println!("The value of element is: {}", element);
}

위와 같이 배열의 길이보다 큰 인덱스를 지정하면 런타임에 에러가 된다.
thread 'main' panicked at 'index out of bounds: the len is 5 but the index is 10', src\main.rs:5:19

저수준의 언어라면 무효인 메모리에 액세스 할 수 버리지만, Rust에서는 에러를 검출해 곧바로 종료한다.
이렇게 하면 이러한 종류의 오류로부터 사용자를 보호할 수 있습니다.

좋은 웹페이지 즐겨찾기