구조체(struct)는 Go 언어에서 객체 지향 프로그래밍 개념을 구현하는 데 사용되는 중요한 요소입니다. 구조체는 서로 다른 데이터 타입의 필드들을 하나로 묶어서 관리하기 위해 사용됩니다.
구조체의 정의
구조체를 정의하기 위해서는 type
키워드와 함께 구조체의 이름과 필드들을 지정해야 합니다. 각 필드는 이름과 타입을 가지며, 필드들은 구조체 안에서 접근할 수 있는 속성이 됩니다.
type Person struct {
name string
age int
}
위 예제에서는 Person
이라는 구조체를 정의하고 있습니다. 이 구조체는 name
과 age
라는 두 개의 필드를 가지고 있으며, 각 필드의 타입은 string
과 int
입니다.
구조체의 활용
구조체를 사용하여 객체 지향 프로그래밍 개념을 구현할 수 있습니다. 예를 들어, 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
객체의 name
과 age
필드를 사용하여 인사말을 출력합니다.
person.introduce() // 출력: 안녕하세요, 제 이름은 John이고, 30살입니다.
구조체를 사용하여 객체 지향 프로그래밍적인 개념을 구현할 수 있으며, 메서드를 활용하여 객체의 동작을 정의할 수 있습니다. 이를 통해 코드의 가독성과 재사용성을 높일 수 있습니다.
결론
구조체를 사용하여 객체 지향 프로그래밍을 구현해보았습니다. 구조체를 정의하고 객체를 생성하며, 필드와 메서드를 활용하여 객체의 동작을 구현할 수 있습니다. Go 언어에서 구조체를 활용하면 코드의 유지보수성과 재사용성을 높일 수 있습니다.