[go] Go 언어에서 메소드의 정의하는 방법

Go 언어는 객체 지향 프로그래밍을 지원하지만, 전통적인 방식으로 클래스와 메서드를 정의하지는 않습니다. 대신 Go 언어는 구조체(struct)에 메서드를 연결하는 방식으로 객체 지향적인 코드를 작성합니다. 이번 포스트에서는 Go 언어에서 메소드를 정의하는 방법에 대해 알아보겠습니다.

구조체 정의하기

먼저 구조체를 정의해야 합니다. 구조체는 필드의 집합으로, 관련된 데이터를 묶는데 사용됩니다. 구조체는 다른 프로그래밍 언어에서의 클래스와 유사한 개념을 가지고 있습니다.

type Person struct {
    name  string
    age   int
    email string
}

위의 예제에서는 Person이라는 구조체를 정의하였습니다. 이 구조체는 name, age, email 필드를 가지고 있습니다.

메소드 정의하기

메서드를 정의하기 위해서는 해당 메서드가 속한 구조체의 리시버(receiver)를 지정해야 합니다. 리시버는 해당 메서드를 호출할 구조체 변수를 나타냅니다.

예를 들어, Person 구조체에 Introduce()라는 메서드를 추가해보겠습니다.

func (p Person) Introduce() {
    fmt.Printf("안녕하세요, 제 이름은 %s입니다.\n", p.name)
}

위의 코드에서는 Introduce() 메서드를 Person 구조체의 리시버로 정의했습니다. 이 메서드는 Person 구조체의 name 필드를 사용하여 인사 메세지를 출력합니다.

메소드 호출하기

메서드를 호출하기 위해서는 구조체 변수를 생성하고 해당 변수를 통해 메서드를 호출해야 합니다.

func main() {
    p := Person{
        name:  "John Doe",
        age:   30,
        email: "johndoe@example.com",
    }

    p.Introduce()
}

위의 예제에서는 main() 함수에서 Person 구조체 변수를 생성하고, Introduce() 메서드를 호출합니다.

결론

Go 언어에서는 구조체에 메서드를 연결하여 객체 지향 프로그래밍을 구현할 수 있습니다. 이러한 방식은 전통적인 클래스와 메서드의 개념에서 벗어나며, 코드를 간결하고 쉽게 유지할 수 있는 장점이 있습니다. 구조체와 메서드를 함께 사용하여 Go 언어의 객체 지향 프로그래밍을 활용해보세요.

참고 자료