Go 언어 10강 - 구조체와 메서드

 

📘 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의 구조체와 메서드는 객체지향의 핵심을 간결하게 구현한다!"