[go] Go 언어의 메서드

목차

  1. 메서드란 무엇인가?
  2. 메서드 정의
  3. 포인터 리시버와 값 리시버
  4. 메서드 호출
  5. 결론

메서드란 무엇인가?

메서드는 특정한 데이터 타입에 속한 함수로, 해당 데이터 타입에 연관된 동작을 정의합니다. Go 언어에서 메서드는 일반적인 함수와 다르게 특별한 형태로 정의됩니다.

메서드 정의

메서드를 정의하기 위해서는 func 키워드와 함수 이름 사이에 리시버(receiver)를 명시해야 합니다. 리시버는 메서드가 속한 데이터 타입을 지정하는 데 사용됩니다.

예를 들어, Person 구조체에 PrintName 메서드를 정의한다면 다음과 같이 작성할 수 있습니다.

type Person struct {
    Name string
}

func (p Person) PrintName() {
    fmt.Println(p.Name)
}

위 예제에서는 Person 구조체에 PrintName 메서드를 정의하였습니다.

포인터 리시버와 값 리시버

Go 언어에서 메서드는 포인터 리시버 또는 값 리시버로 정의될 수 있습니다. 포인터 리시버를 사용하면 메서드가 해당 데이터를 수정할 수 있지만, 값 리시버를 사용하면 복사본이 생성되어 메서드에 전달됩니다.

func (p *Person) UpdateName(name string) {
    p.Name = name
}

위 예제에서 UpdateName 메서드는 포인터 리시버를 사용하여 Person 데이터를 수정할 수 있습니다.

메서드 호출

메서드는 해당 데이터 타입의 인스턴스에서 호출됩니다.

func main() {
    person := Person{Name: "Alice"}
    person.PrintName() // "Alice" 출력
    person.UpdateName("Bob")
    person.PrintName() // "Bob" 출력
}

위 예제에서는 Person 구조체의 인스턴스를 생성하고, PrintName 메서드를 호출한 후 UpdateName 메서드를 호출하여 이름을 변경합니다.

결론

메서드는 Go 언어에서 데이터와 관련된 동작을 쉽게 정의하고 사용할 수 있는 강력한 기능입니다. 메서드를 사용하여 코드를 구조화하고 응집력 있게 만들어 유지보수가 용이한 프로그램을 작성할 수 있습니다.

이상으로 Go 언어의 메서드에 대해 알아보았습니다. 감사합니다.

참고자료: