이번 글에서는 golang의 is a 관계에 대해 알아보겠습니다. 예시 보는게 이해가 빠르므로 바로 예시로 넘어가겠습니다.
위 코드를 보다시피 일반 Player에는 bonus가 없고 Pro에게만 bonus가 있습니다.
그리고 Pro의 구조체를 보면 Player를 포함하고 있습니다.
그런데 Pro는 getSalary 함수를 사용할 수 있을까요? Player와 Pro는 현재 타입이 달라보여서 아래와 같은 방법을 써야할 것 같은 느낌이 듭니다.
이런식으로 Pro의 타입을 받는 함수를 새로 생성해야 될 것 같습니다.
그러나 굳이 이런 함수를 새로 만들지 않아도 작동합니다. 확인을 해보겠습니다.
위 코드의 결과는 100, 150이 출력되고 이는 proPlayer가 Player 타입을 받는 getSalary함수를 사용하는데 문제가 없다는 것을 뜻합니다.
이러한 패턴을 golang에서 is a 관계라고 부릅니다.
'golang' 카테고리의 다른 글
golang에서 heap 사용하기 (0) | 2021.04.03 |
---|---|
golang 인터페이스 활용 (0) | 2021.03.25 |
golang array와slice (0) | 2021.03.23 |
golang과 함께 알아보는 쿠키 (0) | 2020.12.09 |
golang 정렬하기 (0) | 2020.10.22 |