[go] 구조체(struct)를 사용한 객체 지향 프로그래밍 개념

구조체(struct)는 Go 언어에서 객체 지향 프로그래밍 개념을 구현하는 데 사용되는 중요한 요소입니다. 구조체는 서로 다른 데이터 타입의 필드들을 하나로 묶어서 관리하기 위해 사용됩니다.

구조체의 정의

구조체를 정의하기 위해서는 type 키워드와 함께 구조체의 이름과 필드들을 지정해야 합니다. 각 필드는 이름과 타입을 가지며, 필드들은 구조체 안에서 접근할 수 있는 속성이 됩니다.

type Person struct {
    name string
    age  int
}

위 예제에서는 Person이라는 구조체를 정의하고 있습니다. 이 구조체는 nameage라는 두 개의 필드를 가지고 있으며, 각 필드의 타입은 stringint입니다.

구조체의 활용

구조체를 사용하여 객체 지향 프로그래밍 개념을 구현할 수 있습니다. 예를 들어, Person 구조체를 사용하여 다음과 같이 객체를 생성하고 초기화할 수 있습니다.

person := Person{
    name: "John",
    age:  30,
}

이제 person 변수는 name 필드에 “John”을, age 필드에 30을 가지고 있는 객체를 참조하게 됩니다.

구조체의 필드에 접근하기 위해서는 . 연산자를 사용합니다.

fmt.Println(person.name) // 출력: John
fmt.Println(person.age)  // 출력: 30

구조체를 활용하여 여러 개의 객체를 생성하고 관리할 수 있습니다. 예를 들어, 여러 명의 사람을 저장하는 배열을 만들 수 있습니다.

people := []Person{
    {"Alice", 25},
    {"Bob", 28},
    {"Charlie", 35},
}

구조체 메서드

구조체에 메서드를 정의하여 특정 동작을 구현할 수도 있습니다. 메서드는 특정 구조체에 속하는 함수이며, func 키워드와 함께 메서드의 리시버(receiver), 이름, 매개변수, 반환값 등을 지정하여 정의합니다.

func (p Person) introduce() {
    fmt.Printf("안녕하세요, 제 이름은 %s이고, %d살입니다.", p.name, p.age)
}

위 예제에서는 Person 구조체에 introduce()라는 메서드를 정의하였습니다. 이 메서드는 해당 Person 객체의 nameage 필드를 사용하여 인사말을 출력합니다.

person.introduce() // 출력: 안녕하세요, 제 이름은 John이고, 30살입니다.

구조체를 사용하여 객체 지향 프로그래밍적인 개념을 구현할 수 있으며, 메서드를 활용하여 객체의 동작을 정의할 수 있습니다. 이를 통해 코드의 가독성과 재사용성을 높일 수 있습니다.

결론

구조체를 사용하여 객체 지향 프로그래밍을 구현해보았습니다. 구조체를 정의하고 객체를 생성하며, 필드와 메서드를 활용하여 객체의 동작을 구현할 수 있습니다. Go 언어에서 구조체를 활용하면 코드의 유지보수성과 재사용성을 높일 수 있습니다.

참고 자료