[go] 구조체(struct)의 패키지 간 상속 개념

Go 언어에서는 클래스 상속을 직접적으로 지원하지 않습니다. 하지만 구조체(struct)를 사용하여 패키지 간에 상속 개념을 구현할 수 있습니다.

Go 언어는 컴파일 타임에 타입 체크를 수행하므로, 패키지 간 상속을 구현하기 위해서는 구조체 내에 다른 구조체를 포함시키는 방식을 사용합니다. 이를 구성(composition)이라고 합니다.

패키지 간 상속을 구현하기 위한 예제 코드는 다음과 같습니다.

package animal

type Animal struct {
    Name string
    Age  int
}

type Dog struct {
    Animal   // Animal 구조체를 포함함
    Breed    string
}

func NewDog(name string, age int, breed string) *Dog {
    return &Dog{
        Animal: Animal{
            Name: name,
            Age:  age,
        },
        Breed: breed,
    }
}

위의 예제에서 Animal 구조체를 Dog 구조체에 포함시켜 패키지 간 상속 개념을 구현합니다. Dog 구조체는 Animal 구조체의 필드와 메소드를 사용할 수 있게 됩니다.

새로운 Dog 객체를 생성하기 위해서는 NewDog 함수를 사용할 수 있습니다.

package main

import (
    "fmt"
    "animal"
)

func main() {
    dog := animal.NewDog("Max", 3, "Labrador")
    fmt.Println(dog.Name) // Max
    fmt.Println(dog.Age)  // 3
    fmt.Println(dog.Breed)  // Labrador
}

위의 예제에서는 animal 패키지를 import 하여 Dog 객체를 생성하고, Dog 구조체 내의 필드에 접근할 수 있습니다.

구조체의 패키지 간 상속을 통해 코드의 재사용성을 높이고, 효율적인 관리와 유지보수를 할 수 있습니다.

자세한 내용은 다음 참고 자료를 확인해주세요.