[Rust/러스트] 구조체의 메소드, 연관함수
2022. 2. 17. 18:01ㆍProgramming Language/Rust
반응형
■ 구조체의 메소드
구조체의 메소드는 구조체의 impl 블록에서 정의해야 하며 메소드의 첫번째 파라미터는 self가 됩니다. 추가적으로 impl의 명은 구조체의 명과 동일해야 하며, 첫번째 파라미터 self는 메소드를 호출하는 인스턴스를 가르킵니다.
struct Person{
name : String,
age : u32,
address : String,
email : String,
}
// 구조체 구현
impl Person{
// 메소드 정의
fn show_person(&self) {
println!("Name : {}", self.name);
println!("Age : {}", self.age);
println!("Address : {}", self.address);
println!("Email : {}", self.email);
}
}
fn main(){
// 인스턴스 생성
let person = Person{
name : String::from("Hyunmin han"),
age : 29,
address : String::from("서울시 강남구 역삼동"),
email : String::from("hyunmin@gmail.com"),
};
// show_person 메소드 호출
person.show_person();
}
▶ 출력 결과
Name : Hyunmin han
Age : 29
Address : 서울시 강남구 역삼동
Email : hyunmin@gmail.com
■ 구조체의 연관함수
구조체의 연관 함수는 메소드와 다르게 self 파라미터를 갖지 않는 함수이며 구조체::연관함수 문법을 사용하여 호출합니다.
struct Person{
name : String,
age : u32,
address : String,
email : String,
}
// 구조체 구현
impl Person{
// 연관 함수 정의
fn new_person(name : String, age : u32, address : String, email : String) -> Person{
Person{
name,
age,
address,
email,
}
}
}
fn main(){
// 연관 함수를 통해 새로운 인스턴스 생성
let person = Person::new_person(
String::from("Hyunmin han"),
29,
String::from("서울시 강남구 역삼동"),
String::from("hyunmin@gmail.com"),
);
println!("Name : {}", person.name);
println!("Age : {}", person.age);
println!("Address : {}", person.address);
println!("Email : {}", person.email);
}
▶ 출력 결과
Name : Hyunmin han
Age : 29
Address : 서울시 강남구 역삼동
Email : hyunmin@gmail.com
반응형
'Programming Language > Rust' 카테고리의 다른 글
[Rust/러스트] 패턴 매칭(match, if let) 정리 (0) | 2022.02.21 |
---|---|
[Rust/러스트] 열거형(enum) 정리 (0) | 2022.02.20 |
[Rust/러스트] 구조체(struct) 정리 (0) | 2022.02.17 |
[Rust/러스트] 참조자(References)와 빌림(Borrowing) (0) | 2022.02.17 |
[Rust/러스트] 소유권(Owner) (0) | 2022.02.17 |