1. 데이터 타입
Rust가 제공하는 대표적인 데이터 타입은 다음과 같습니다.
정수: i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize
부동소수점: f32, f64
불리언: true, false
문자열: “Hello World!”
배열: [1,2,3,4,5]
슬라이스: &arr [2…5]
튜플: (1,2,3,4,5)
문자: ‘a’
데이터 타입의 분류 중에 Primitive Type이라는 것이 있습니다.
이런 타입의 값들은 실제로 데이터 값을 저장합니다.
다르게 말하면, 이 타입들 보다 더 작은 단위의 타입은 없습니다. 이 타입들의 조합으로 다른 데이터 타입이 만들어집니다.
Primitive Type에는 정수, 부동소수점 같은 숫자형 데이터 타입, 문자(char) 그리고 불리언 타입이 해당합니다.
문자열은 문자의 조합이므로 Primitive Type이 아닙니다.
알아두면 좋을 몇 가지만 살펴 보겠습니다.
- string과 char
문자 (char) 타입을 사용할 때는 쌍따옴표 “a”가 아니라 따옴표 ‘a’를 사용 해야 합니다. 쌍따옴표는 문자가 하나가 있거나 아예 없더라도 문자열 리터럴로 간주합니다.
- i와 u
정수형에서 i는 부호 있는 정수이고 u는 부호 없는 양의 정수입니다.
i32는 부호있는 32비트 정수
u32는 부호 없는 32비트 양의 정수입니다.
i와 u는 size에서도 같은 의미로 사용됩니다.
- Size
Rust의 레퍼런스에 따르면, Size 타입은 메모리의 위치를 참조하는데 사용하는 바이트 수입니다.isize와 usize이 포함됩니다.
배열이나 문자열 등의 길이를 표현할 때 사용합니다. 예를 보겠습니다.
let h = "hello";
let k = f.len(); // 1
println!("{}", k);
// 출력
5
// 1: len 메소드는 문자열의 길이를 반환합니다. len 메소드의 시그니처는 다음과 같습니다.
pub const fn len(&self) -> usize
반환값 타입이 usize임을 확인 할 수 있습니다.
- underscore( _ )
숫자형 타입에는 “_”을 독특한 용법으로 사용할 수 있습니다.
let a = 123_456_789; // 1
let b :i32 = 100; // 2
let c = 100_i32; // 3
let d = 12.34_f64; // 4
let e = 100i32; // 5
let f = 12.3f64; // 6
// 1: 여기서 사용 된 “_”는 아무런 효과도 없습니다. 다만 읽기 쉽게 만들 뿐입니다.
// 2: 변수의 데이터 타입을 명시적으로 선언했습니다.
// 3: “_”을 접미사로 사용해서 변수의 타입을 선언 할 수 있습니다. // 2와 동일한 데이터 타입과 값을 가집니다.
// 4: 부동소수점 타입에도 사용할 수 있습니다.
// 5와 // 6: 접미사를 사용해서 타입을 선언할 경우 반드시 “_”을 사용할 필요는 없습니다. “_”은 다만 가독성을 높이기 위헤서 사용합니다.
참고로, 이진수, 팔진수, 십육진수 등을 표현하는 방법도 알아 보겠습니다.
fn main() {
// 1
let a = 0b1011;
let b = 0o12;
let c = 0xA1C2;
// 2
println!("십진수 a:{}, b:{}, c:{}", a,b,c);
println!("이진수 a:{:b}, b:{:b}, c:{:b}", a,b,c);
println!("팔진수 a:{:o}, b:{:o}, c:{:o}", a,b,c);
println!(" 십육진수 a:{:x}, b:{:x}, c:{:x}", a,b,c);
}
// 출력
십진수 a:11, b:10, c:41410
이진수 a:1011, b:1010, c:1010000111000010
팔진수 a:13, b:12, c:120702
십육진수 a:b, b:a, c:a1c2
// 1: “0b”, “0o”, “0x” 접두사는 각각 이진수, 팔진수, 십육진수를 표현합니다.
// 2: 포맷터를 사용해서 출력할 진수 형식을 지정하고 있습니다. { } 안의 :b 같은 것들이 포맷터입니다.
'Rust 입문' 카테고리의 다른 글
[Rust] 데이터 타입 변환과 유추 (0) | 2022.09.25 |
---|---|
[Rust] 변수, 상수 그리고 static (0) | 2022.09.25 |
[Rust] println! 매크로 (1) | 2022.09.23 |
[Rust] 주석 달기 (1) | 2022.09.23 |
[Rust] main()을 알아보자 (1) | 2022.09.23 |