상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Go에서 구조체의 임베딩(embedding)은 어떻게 하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go 언어에서 구조체의 임베딩(embedding)은 다른 구조체를 포함하여 새로운 구조체를 정의하는 방법입니다. 이를 통해 코드의 재사용성을 높이고, 객체 지향 프로그래밍의 상속과 유사한 기능을 제공할 수 있습니다. 임베딩을 사용하면 포함된 구조체의 필드와 메서드에 직접 접근할 수 있어, 코드의 간결성과 가독성을 향상시킵니다. 구조체 임베딩의 기본 개념 구조체 임베딩은 다른 구조체를 포함하는 방식으로 이루어집니다. 포함된 구조체는 외부 구조체의 필드처럼 사용될 수 있으며, 이를 통해 포함된 구조체의 필드와 메서드에 직접 접근할 수 있습니다. 예제 다음은 구조체 임베딩의 간단한 예제입니다. ```go package main import ( "fmt" ) // 기본 구조체 정의 type Address struct { City string Country string } // 임베딩된 구조체 정의 type Person struct { Name string Age int Address // Address 구조체를 임베딩 } func main() { // Person 구조체 <a href='https://sangseek.com/sangseeks/인스턴스 생성/ko'>인스턴스 생성</a> p := Person{ Name: "Alice", Age: 30, Address: Address{ City: "Seoul", Country: "South Korea", }, } // 임베딩된 필드에 직접 접근 fmt.Println("Name:", p.Name) fmt.Println("Age:", p.Age) fmt.Println("City:", p.City) // Address 구조체의 City 필드에 직접 접근 fmt.Println("Country:", p.Country) // Address 구조체의 Country 필드에 직접 접근 } ``` 위의 예제에서 `Person` 구조체는 `Address` 구조체를 임베딩하고 있습니다. `Person`의 인스턴스를 생성할 때 `Address`의 필드에 직접 접근할 수 있습니다. 이는 `p.City`와 `p.Country`를 통해 가능하며, `Address` 구조체의 필드를 `Person` 구조체의 필드처럼 사용할 수 있습니다. 메서드 임베딩 구조체 임베딩은 메서드에도 적용할 수 있습니다. 포함된 구조체의 메서드를 외부 구조체에서 직접 호출할 수 있습니다. ```go package main import ( "fmt" ) // 기본 구조체 정의 type Address struct { City string Country string } // Address 구조체에 메서드 추가 func (a Address) FullAddress() string { return fmt.Sprintf("%s, %s", a.City, a.Country) } // 임베딩된 구조체 정의 type Person struct { Name string Age int Address // Address 구조체를 임베딩 } func main() { // Person 구조체 인스턴스 생성 p := Person{ Name: "Alice", Age: 30, Address: Address{ City: "Seoul", Country: "South Korea", }, } // 임베딩된 메서드 호출 fmt.Println("Full Address:", p.FullAddress()) // Address 구조체의 FullAddress 메서드 호출 } ``` 위의 예제에서 `Address` 구조체에 `FullAddress`라는 메서드를 추가했습니다. `Person` 구조체의 인스턴스인 `p`에서 `FullAddress` 메서드를 직접 호출할 수 있습니다. 장점과 단점 장점 1. 코드 재사용성 : 공통된 필드와 메서드를 여러 구조체에서 재사용할 수 있습니다. 2. 가독성 : 코드가 간결해지고, 구조체 간의 관계를 명확하게 표현할 수 있습니다. 3. 유연성 : 구조체의 필드와 메서드를 쉽게 확장할 수 있습니다. 단점 1. 명확성 부족 : 임베딩된 필드가 많아질 경우, 어떤 필드가 어떤 구조체에 속하는지 혼란스러울 수 있습니다. 2. <a href='https://sangseek.com/sangseeks/이름 충돌/ko'>이름 충돌</a> : 임베딩된 구조체와 외부 구조체에 동<a href='https://sangseek.com/sangseeks/일한/ko'>일한</a> 이름의 필드가 있을 경우, 충돌이 발생할 수 있습니다. 이 경우, 명시적으로 구조체 이름을 사용하여 접근해야 합니다. 결론 Go 언어의 구조체 임베딩은 코드의 재사용성과 가독성을 높이는 강력한 기능입니다. 이를 통해 객체 지향 프로그래밍의 상속과 유사한 구조를 만들 수 있으며, 다양한 상황에서 유용하게 활용될 수 있습니다. 그러나 임베딩을 사용할 때는 명확성과 이름 충돌에 주의해야 합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기