데이터 타입
러스트는 정적 타입 언어. 컴파일 시점에 러스트는 모든 변수의 타입을 정확히 알아야 함.
러스트의 데이터 타입은 크게 두가지로 나뉨: 스칼라(scalar) / 컴파운드(compound)
스칼라 타입
스칼라 타입에는 4가지 기본형이 있음: integers, floating-point numbers, booleans, characters
1) 인티저 타입
길이 |
부호 |
부호없는 |
8-bix |
i8 |
u8 |
16-bit |
i16 |
u16 |
32-bit |
i32 |
u32 |
64-bit |
i64 |
u64 |
arch |
isize |
usize |
isize 와 usize 는 구동 머신의 타입에 따라 달라짐; 32비트 -> 32비트 / 64비트 -> 64비트
인티저 리터럴에는 숫자 외에 자리수 구분자(ex: 100_000)를 넣을 수 있음.
2) 플로팅 포인트 타입
32비트 / 64비트로 구분. 기본형은 64비트
let x = 2.0 // f64
let y: f32 = 3.0 // f32
3) 불린 타입
아래와 같이 선언
let t = true; // 타입 생략
let f: bool = false; // 명시적 타입 지정
4) 캐릭터 타입
문자를 홀따옴표로 묶으면 캐릭터 타입.
let c = 'z';
캐릭터 타입은 유니코드 스칼라 값을 표현 가능. 이는 아스키보다 그 범위가 넓음: U+000 ~ U+D7FF, U+E000 ~ U+10FFFF
유니코드 컨셉이기 때문에 문자 외에 이모지콘이나 기타 문자가 아닌 것도 표현 가능.
컴파운드 타입
1) 튜플
여러 값을 하나로 묶음. 아래와 같이 선언/생성 가능. 다른 타입의 값도 한 튜플에 묶을 수 있음.
let tup: (i32, f64, u8) = (500, 6.4, 1); // tup 변수에 각각 다른 타입의 3가지 값으로 구성된 튜플 대입
let tup = (500, 6.4, 1); // 타입 생략 가능(타입 추론)
let (x, y, z) = tup; // 변수를 선언하고 각각에 튜플 안의 값을 대입
let five_hundred = tup.0; // 500
let siz_point_four = tup.1; // 6.4
변수에 튜플을 대입할 경우 튜플의 데이터 수와 선언된 변수의 수가 일치해야 함. 그렇지 않으면 컴파일 에러 발생.
2) 배열
반드시 같은 타입의 값으로 묶여야 함. 배열의 길이는 한 번 정해지면 변하지 않음.
let a = [1, 2, 3, 4, 5];
let first = a[0];
let second = a[1];
'Rust' 카테고리의 다른 글
컨트롤 플로우(루프) (0) | 2018.02.15 |
---|---|
컨트롤 플로우(if 조건문) (0) | 2018.02.15 |
함수의 동작 (0) | 2018.02.15 |
변수 (0) | 2018.02.14 |
환경 잡기 (0) | 2018.02.13 |