
구조체는 다른 타입의 값들로 구성이 가능하다. 각 데이터에 이름을 부여해서 값의 의미를 표현할 수 있다. 구조체를 정의하는 방법은 "struct 구조체의 이름 {데이터1 이름: 데이터1, 데이터2 이름: 데이터, ... }"이다. 중괄호 안의 데이터를 field라고 부른다. 구조체는 "키: 값"의 나열이다. 키는 필드의 이름, 값은 필드에 저장할 데이터이다. 위의 예시에서 알 수 있듯 구조체의 인스턴스를 생성할 때 정의한 순서를 지킬 필요는 없다. 구조체에서 값을 읽기 위해서 마침표(.)를 사용한다. 구조체.필드의_이름 방식으로 데이터를 읽어오면 된다. 가변 인스턴스의 경우 필드의 값의 변경이 가능하다. 특정한 필드만이 가변성을 가지지 않고 인스턴스 자체가 가변 인스턴스이다. 러스트는 필드의 일부만 가변..

🌱 소유권이란? 러스트에서 메모리는 컴파일러가 컴파일 시점에 검사하는 다양한 규칙으로 이루어진 소유권 시스템에 의해 관리된다. 따라서 소유권과 관련된 기능은 프로그램의 실행 성능에 아무런 영향을 미치지 않는다. 이런 방식으로 러스트는 메모리 안정성을 보장한다. 📌 스택 메모리 & 힙 메모리 러스트 같은 시스템 프로그래밍 언어 환경에서는 스택 메모리 또는 힙 메모리 중 어디에 저장되었는지에 따라 언어의 동작이나 의사결정에 큰 영향을 미친다. 스택과 힙은 런타임에 활용되는 메모리의 일부이다. 스택은 순서대로 데이터를 저장하며 데이터를 읽을 때는 역순으로 읽는다. 따라서 마지막에 들어온 데이터를 먼저 읽는 구조(LIFO, Last In First Out)이다. 스택에 저장되는 모든 데이터들은 고정된 크기를 가..

⚡️if 조건에 따라 분기할 때 사용한다. 러스트의 if 문의 조건문은 반드시 boolean 타입을 리턴해야 한다. if는 표현식 이므로 let 구문 오른쪽에 사용할 수 있다. 이렇게 사용할 때 각 가지가 리턴하는 결과는 모두 같은 타입이어야 한다. 이와 같이 다른 타입을 리턴한 경우 에러가 발생한다. ⚡️반복문 러스트는 loop, while, for 세 가지 종류의 루프를 제공한다. (1) loop loop 키워드는 루프를 중지시키는 코드가 있지 않다면 코드 블록을 무한으로 실행한다. 무한 반복하는 루프를 종료하고 싶다면 "Ctrl + c"를 사용하면 된다. 또는 루프 안에 break 키워드를 삽입하면 루프의 실행이 중단된다. 루프는 실패할 가능성이 있는 작업을 재시도하는 경우 이용한다. 작업의 결과를..

러스트는 함수와 변수의 이름에 스네이크 케이스(snake case: 소문자로 이루어진 단어드를 언더바로 구분하는 방식)를 사용한다. 매개변수는 함수의 signiture에 포함되는 특별한 변수이다. 함수 signiture에는 각 매개변수의 타입을 명시해야 한다. 여러개의 매개변수를 사용할 때는 쉼표(,)를 사용하면 된다. 📌함수의 signiture: 함수를 구분하기 위한 구성 요소 함수의 이름 매개변수의 개수 매개변수의 자료형 📌구문(statement)과 표현식(expression) 구문: 동작을 실행하지만 값을 리턴하지 않는 명령어 표현식: 어떤 값을 리턴 리턴값에 이름을 부여하지는 않지만 리턴할 값의 타입은 화살표(->) 다음에 지정해 주어야 한다. 리턴값은 함수의 마지막 표현식 값이라고 생각해도 된다..

러스트는 컴파일 시점에 모든 변수의 타입이 결정되어야 하는 정적 타입 언어이다. 🔹 스칼라 타입: 하나의 값을 표현 🔹 컴파운드 타입: 하나의 타입으로 여러개의 값을 그룹화한 타입 🌱컴파운드 타입 (1) 튜플 타입 서로 다른 타입의 값들을 하나의 컴파운드 타입으로 그룹화하기에 적합 고정된 길이를 가짐(크기를 변경할 수 없음) 괄호(())안에 값을 쉼표로 구분해서 표기 (2) 배열 타입 같은 타입의 값들의 컬렉션 고정된 길이를 가짐 대괄호(square bracket, []) 안에 쉼표로 구분해서 나열 데이터를 스택 메모리에 할당 값을 추가하거나 삭제할 일이 없을 경우 사용 위의 인덱스에 대한 런타임 에러 예제에서 러스트의 안정성 원리를 확인할 수 있다. 엉뚱한 메모리에 대한 접근을 허용하는 대신 프로그램을..

러스트의 변수는 기본적으로 불변성을 가진다. 이와 관련된 에러는 컴파일 시점에 알 수 있다. 러스트는 컴파일러 차원에서 변경되지 않는다고 선언한 값은 실제로 변경할 수 없도록 보장되기 대문에 변수를 일일이 추적할 필요가 없다. 따라서 코드의 의도를 더 쉽게 파악할 수 있다. 변수가 가변성이 필요할 경우에는 변수 이름 앞에 mut 키워드를 추가하여 가변 변수를 선언할 수 있다. 🌱 Shadowing shadowing은 마지막에 선언된 변수를 참조하는 것이다. 같은 이름의 다른 타입 변수를 선언할 수 있다. 위의 코드에서 마지막에 선언된 spaces를 출력한다. 만약 spaces 가변 변수로 하고 값을 변경하려고 하면 mismatched types 에러가 발생한다.

📌프로그램 흐름 프로그램은 1과 100 사이의 난수를 생성한다 플레이어는 예측값을 입력한다 예측값이 정답보다 크거나 같다면 알려주고 2번으로 돌아간다. 만약 예측값이 정답과 같다면 프로그램을 종료한다. io 라이브러리는 std(표준 라이브러리)에 포함되어 있다. 플레이어에게 입력값을 받아오기 위해서 io 라이브러리를 가져온다. 러스트는 prelude에서 몇 개의 타입만을 가져오기 때문에 포함되어 있지 않으면 use 구문을 이용해 가져와야 한다. 변경할 수 있게 하기 위해 mut 키워드를 사용해서 변수를 선언하였다. ::는 new 함수가 String 타입의 연관함수(특정한 인스턴스가 아닌 타입 자체에 구현된 함수)라는 점을 의미한다. 이 new 함수는 빈 문자열을 생성한다. stdin 함수는 표준 입력에 ..

Cargo: 러스트의 빌드 시스템이자 패키지 관리자 cargo --version: cargo의 버전을 출력하는 명령어 cargo new (project_name): 새로운 프로젝트 디렉토리를 생성하는 명령어 cargo 프로젝트에서는 코드가 src 디렉터리에 생성된다. TOML(Tom's Obvious, Minimal Language): 카고의 설정 파일 형식 [package]: 패키지의 설정을 관리하기 위한 구문들이 시작됨을 의미하는 섹션의 제목 name: 카고가 프로그램을 컴파일할 때 필요한 이름 version: 버전 authors: 작성자 edition: 러스트가 사용할 에디션 [dependencies]: 프로젝트 의존 라이브러리 목록을 관리하는 섹션이 시작하는 부분 크레이트(crate): 러스트에서..

Rust는 기본적으로 프로젝트와 라이브러리를 cargo로 관리한다. cargo new (프로젝트 이름) --bin 위와 같은 명령어로 새로운 프로젝트를 생성한다. cargo run 프로젝트 내에서 위와 같은 명령어로 프로그램을 실행시킬 수 있다. hello라는 프로젝트명으로 프로젝트를 생성하였다. 생성한 프로젝트의 구조이다. "Hello, world!"를 출력하는 코드파일과 cargo 프로젝트 속성파일이다. cargo run으로 파일을 실행하였을 때 결과이다. main.rs 파일이다. 러스트는 관습적으로 .rs 확장자를 사용한다. fn으로 main이 함수라는 것을 알려준다. println!으로 "Hello, world!"를 출력해준다.
- Total
- Today
- Yesterday
- 확장 함수
- pm.test
- solidity
- java
- hashcode
- pm.expect
- git
- python3
- postman
- mysql
- 코틀린
- 주생성자
- 코딩테스트
- DGS Framework
- graphql
- Python
- Kotlin In Action
- squash merge
- downTo
- Kotlin
- postman tests
- 2차 인터뷰
- Basic Type
- postman collection
- 1차 인터뷰
- string
- go 특징
- Squash and merge
- github
- 네이버 2022 공채
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |