본문 바로가기
golang

golang의 is a 관계

by PudgeKim 2021. 3. 25.

이번 글에서는 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