[go] Go 언어에서 임베딩된 메소드

Go 언어는 다른 구조체를 임베딩하여 새로운 타입을 생성하는 기능을 제공합니다. 이렇게 생성된 타입은 임베딩된 구조체의 멤버를 바로 접근할 수 있어서 코드의 재사용성을 높이는데 도움을 줍니다.

임베딩된 구조체의 메소드를 사용하려면 다음과 같이 메소드 호출을 통해 구조체의 필드에 접근할 수 있습니다.

package main

import "fmt"

type Animal struct {
	Name string
}

func (a Animal) Speak() {
	fmt.Printf("I am %s\n", a.Name)
}

type Dog struct {
	Animal // Animal 구조체를 임베딩
	Breed  string
}

func main() {
	dog := Dog{
		Animal: Animal{Name: "Max"},
		Breed:  "Labrador",
	}

	fmt.Println(dog.Name) // Animal 구조체의 필드에 접근
	dog.Speak()           // Animal 구조체의 메소드 호출
}

위의 예제에서 Animal 구조체를 Dog 구조체에 임베딩하였습니다. 이제 Dog 구조체에서 Animal의 필드와 메소드를 사용할 수 있습니다. dog.NameAnimal 구조체의 Name 필드에 접근하여 값을 출력하고, dog.Speak()Animal 구조체의 Speak() 메소드를 호출하여 “I am Max”를 출력합니다.

Go 언어에서 임베딩된 메소드는 구조체 간의 관계를 표현하는 데 유용하며, 코드를 간결하고 읽기 쉽게 만드는 데 도움이 됩니다.

더 자세한 내용은 공식 Go 문서를 참고하시기 바랍니다.