괴발개발 성장기

Study/Go 언어

[Golang] interface{} => struct 변환하기

지니유 2023. 7. 22. 10:14
반응형

# 배경

배열안에 map이 여러개 있다. map안에는 값이 여러개 있다. 배열안에 있는 map의 타입은 interface{} 이다.

 


  • donationInfo 안에는 []interface{} 타입으로 값이 있다.
donationInfo := dataHTML.Content["donationInfo"].([]interface{})
map[donationDate:20220328 donationId:279939 totalAmount:3076 totalQuantity:2] map[donationDate:20220316 donationId:279936 totalAmount:54834 totalQuantity:4] map[donationDate:20220316 donationId:279935 totalAmount:4834 totalQuantity:3] map[donationDate:20220316 donationId:279934 totalAmount:6738 totalQuantity:3]]

나는 interface{}를 struct로 변경 하고 싶었다.

map[donationDate:20220328 donationId:279939 totalAmount:3076 totalQuantity:2]

이건 타입이 interface{}이다.

우선 struct를 하나 만들었다. => DonationInfo{} 그리고 이 스트럭을 배열로 만들었다.

var dtoInfo = make([]DonationInfo{}, len(donationInfo))

그리고 배열 donationInfo를 for문을 돌렸다.
거기서 나오는 interface{}를 바이트 데이터롤 변경하고
바이트를 struct에 넣어 주면 값을 찾기가 쉽다.

 

	for i, v := range donationInfo {
			byteData, _ := json.Marshal(v)
			json.Unmarshal(byteData, &dtoInfo[i])
	}

 

그럼 원하는 값을 쉽게 얻을 수 있다.

 

[{279939 20220328 2 3076} {279936 20220316 4 54834} {279935 20220316 3 4834} {279934 20220316 3 6738}]
반응형