Menu
Coddy logo textTech

Go OOP 입문

Coddy GO 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 107개 중 5번째.

Go에는 클래스가 없지만, structsmethods를 통해 객체 지향 프로그래밍을 구현합니다. 구조체(struct)는 관련된 데이터를 그룹화하고, 메서드(method)는 해당 구조체에 연결된 동작을 정의합니다.

데이터를 저장할 구조체(struct)를 정의합니다

type Dog struct {
    Name string
    Age  int
}

구조체에 메서드를 연결합니다

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

인스턴스를 생성하고 사용하기

package main

import "fmt"

type Dog struct {
    Name string
    Age  int
}

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

func main() {
    myDog := Dog{Name: "Buddy", Age: 3}
    fmt.Println(myDog.Bark()) // 출력: Buddy says Woof!
    fmt.Println(myDog.Age)    // 출력: 3
}

Go에서 메서드 이름 앞의 (d Dog) 부분은 리시버(receiver)라고 불립니다. 이것은 메서드를 Dog 구조체와 연결하며, 다른 언어에서 메서드가 클래스에 속하는 방식과 유사합니다.

challenge icon

챌린지

쉬움

Go의 OOP 접근 방식을 연습하기 위해 Cat 구조체와 메서드를 생성하세요:

  • Name (string)과 Age (int) 필드를 가진 Cat 구조체를 정의하세요
  • 고양이의 이름 뒤에 " says Meow!"가 붙은 문자열을 반환하는 Speak 메서드를 추가하세요

직접 해보기

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Scan(&name, &age)

    cat := Cat{Name: name, Age: age}

    fmt.Printf("Name: %s\n", cat.Name)
    fmt.Printf("Age: %d\n", cat.Age)
    fmt.Println(cat.Speak())
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨