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에서는 에러를 검출해 곧바로 종료한다.
이렇게 하면 이러한 종류의 오류로부터 사용자를 보호할 수 있습니다.
Reference
이 문제에 관하여(Rust 언어 공부를 처음 봤다. 그 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takishita2nd/items/e45fed6660084bf5a84c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
let guess: u32 = "42".parse().expect("Not a number!");
fn main() {
let x = 2.0; // f64
let y: f32 = 3.0; // f32
}
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;
}
fn main() {
let t = true;
let f: bool = false; // with explicit type annotation
}
fn main() {
let c = 'z';
let z = 'ℤ';
let heart_eyed_cat = '😻';
}
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;
}
fn main() {
let a = [1, 2, 3, 4, 5];
}
let a: [i32; 5] = [1, 2, 3, 4, 5];
let a = [3; 5];
fn main() {
let a = [1, 2, 3, 4, 5];
let first = a[0];
let second = a[1];
}
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
Reference
이 문제에 관하여(Rust 언어 공부를 처음 봤다. 그 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takishita2nd/items/e45fed6660084bf5a84c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)