📘 Go 언어 10강 - 구조체와 메서드
Go 언어는 클래스는 없지만 구조체(struct)와 메서드(method) 조합으로 객체지향처럼 사용할 수 있어요.
이번 시간에는 데이터를 묶는 구조체와 그 데이터를 다루는 메서드를 배워봅니다.
1️⃣ 구조체(struct) 선언
type Person struct {
name string
age int
}
2️⃣ 구조체 사용
p := Person{name: "고퍼", age: 10}
fmt.Println(p.name, p.age) // 고퍼 10
3️⃣ 메서드 선언
func (p Person) greet() {
fmt.Println("안녕하세요, 저는", p.name, "입니다.")
}
메서드는 구조체에 리시버(receiver)를 붙여 선언합니다.
4️⃣ 포인터 리시버
값을 수정하려면 포인터 리시버를 써야 합니다.
func (p *Person) birthday() {
p.age += 1
}
💡 예제 1: 구조체 + 메서드 호출
type Person struct {
name string
age int
}
func (p Person) introduce() {
fmt.Println("저는", p.name, "이고,", p.age, "살입니다.")
}
func main() {
p := Person{"루피", 19}
p.introduce()
}
💡 예제 2: 포인터 리시버로 값 변경
func (p *Person) grow() {
p.age += 1
}
func main() {
p := Person{"루피", 19}
p.grow()
p.introduce() // 20세로 출력됨
}
🧠 요약
struct
: 여러 필드를 묶어 하나의 타입으로 표현func (리시버 StructType) 메서드()
: 구조체 전용 함수- 값 변경은
*포인터 리시버
로 구현
한 줄 요약: "Go의 구조체와 메서드는 객체지향의 핵심을 간결하게 구현한다!"