코딩을 하다보니, 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방식밖에 없다는것을 확인했다.
'프로그래밍 > golang' 카테고리의 다른 글
| aws api signature 구현 (0) | 2022.11.07 |
|---|---|
| 함수형 코딩4 - 타임라인 관리하기 (2) | 2022.09.23 |
| 함수형 코딩3 - 일급함수, 고차함수 (0) | 2022.09.22 |
| 함수형 코딩2 - 계층화, 추상화 (0) | 2022.09.22 |
| 함수형 코딩1 - 부수효과, 액션, 계산, 데이터 (0) | 2022.09.22 |