본문 바로가기
프로그래밍/golang

golang에서 inheritance structure

by 나도한강뷰 2022. 8. 24.

코딩을 하다보니, db와 api request의 변수들을 유기적으로 저장하기위해서 관련 structure를 정의내렸다.

 

예를 들면, tag정보를 담는 tag structure를 다음과 같이 정의했다.

var Tag struct {
	ResourceArn	string
	TagKey 		string
	TagValue	string
}

하지만, db에 저장하는 데이터의 형식은 Tag structure에 Owner라는 생성자 항목을 추가해야되는 상황이였다. Tag는 변경될 수 없는 고정의 structure라는 조건이 있었기때문에,

 

Tag를 inheritance하고 거기에 owner를 추가해서 쓰려고 했다.

 

일단, golang은 객체를 지원하지않는 언어이며, 그에따라 상속과 같은 기능도 없다.

 

그리고 검색해본 결과, 1번같이 멤버를 추가하는것은 가능하지만, 그게 2번과 완전히 동일한 상태는 아니다. 왜냐하면 초기값들의 선언할때, TagDBForm에서 바로 Tag정보를 넣어주는게 아닌, Tag구조체를 이용해서 초기값을 선언해야되기 때문이다.

1.
var TagDBForm struct {
	Tag
	Owner		string
}

2.
var TagDBForm struct {
	ResourceArn	string
	TagKey 		string
	TagValue	string
	Owner		string
}

https://stackoverflow.com/questions/34644117/golang-struct-inheritance-not-working-as-intended

위의 링크에서와같이, outter structure내부에 inner structure를 정의해주고, 하는 구조체 임베딩, composition방식밖에 없다는것을 확인했다.