데이터 타입



러스트는 정적 타입 언어. 컴파일 시점에 러스트는 모든 변수의 타입을 정확히 알아야 함. 

러스트의 데이터 타입은 크게 두가지로 나뉨: 스칼라(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

+ Recent posts