상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Go에서 다형성(polymorphism)을 구현하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go 언어에서 다형성(polymorphism)은 주로 인터페이스(interface)를 통해 구현됩니다. 다형성은 객체 <a href='https://sangseek.com/sangseeks/지향/ko'>지향</a> 프로그래밍의 중요한 개념 중 하나로, 동일한 인터페이스를 구현하는 다양한 타입의 객체를 동일한 방식으로 다룰 수 있게 해줍니다. Go는 전통적인 클래스 기반의 상속을 사용하지 않고, 대신 인터페이스와 임베디드 타입을 통해 다형성을 제공합니다. 1. 인터페이스 정의 Go에서 인터페이스는 메서드의 집합을 정의합니다. 인터페이스를 구현하는 타입은 해<a href='https://sangseek.com/sangseeks/당/ko'>당</a> 메서드를 반드시 구현해야 합니다. 인터페이스는 다음과 같이 정의할 수 있습니다: ```go type Shape interface { Area() float64 } ``` 위의 예제에서 `Shape` 인터페이스는 `Area`라는 메서드를 요구합니다. 이 인터페이스를 구현하는 모든 타입은 `Area` 메서드를 제공해야 합니다. 2. 인터페이스 구현 인터페이스를 구현하는 타입은 다음과 같이 정의할 수 있습니다: ```go type Circle struct { Radius float64 } func (c Circle) Area() float64 { return 3.14 * c.Radius * c.Radius } type Rectangle struct { Width, Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } ``` 위의 예제에서 `Circle`과 `Rectangle` 구조체는 `Shape` 인터페이스를 구현하고 있습니다. 각각의 타입은 `Area` 메서드를 제공하여 자신의 면적을 계산합니다. 3. 다형성 사용 이제 `Shape` 인터페이스를 사용하여 다양한 타입의 객체를 다룰 수 있습니다. 예를 들어, 다음과 같이 여러 형태의 객체를 처리할 수 있습니다: ```go func PrintArea(s Shape) { fmt.Println("Area:", s.Area()) } func main() { c := Circle{Radius: 5} r := Rectangle{Width: 4, Height: 6} PrintArea(c) // Area: 78.5 PrintArea(r) // Area: 24 } ``` `PrintArea` 함수는 `Shape` 인터페이스를 매개변수로 받아 다양한 형태의 객체를 처리할 수 있습니다. 이처럼 Go의 인터페이스를 사용하면 코드의 유연성과 재사용성을 높일 수 있습니다. 4. 빈 인터페이스 Go에서는 빈 인터페이스(`interface{}`)를 사용하여 모든 타입을 수용할 수 있습니다. 빈 인터페이스는 어떤 타입의 값도 가질 수 있기 때문에, 다형성을 더욱 유연하게 사용할 수 있습니다. 그러나 빈 인터페이스를 사용할 때는 타입 단언(type assertion)이나 타입 스위치(type switch)를 통해 실제 타입을 확인해야 합니다. ```go func PrintType(i interface{}) { switch v := i.(type) { case Circle: fmt.Println("Circle with radius:", v.Radius) case Rectangle: fmt.Println("Rectangle with width and height:", v.Width, v.Height) default: fmt.Println("Unknown type") } } ``` 5. 결론 Go에서 다형성을 구현하는 방법은 주로 인터페이스를 통해 이루어집니다. 인터페이스는 메서드의 집합을 정의하고, 이를 구현하는 다양한 타입을 통해 다형성을 실현합니다. 이러한 방식은 코드의 유연성과 재사용성을 높이며, 다양한 객체를 동일한 방식으로 처리할 수 있게 해줍니다. Go의 인터페이스는 객체 지향 프로그래밍의 강력한 도구로, 개발자가 더 나은 구조의 코드를 작성할 수 있도록 돕습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기