일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- git rebase
- redux toolkit 설명
- 러스트 기초 학습
- Vue.js
- cloud hsm
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- ethers typescript
- ambiguous function description
- vue기초
- redux 기초
- 체인의정석
- cloud hsm 서명
- Vue
- erc4337 contract
- cloud hsm 사용하기
- 머신러닝기초
- ethers type
- 티스토리챌린지
- erc4337
- 러스트 기초
- ethers v6
- ethers websocket
- 오블완
- 스마트컨트렉트 함수이름 중복 호출
- SBT표준
- 러스트기초
- rust 기초
- 계정추상화
Archives
- Today
- Total
체인의정석
go 응답 값 타입 any처럼 유연하게 지정하기 interface 사용법 본문
728x90
interface를 따로 쓰면 쓰면 따로 응답 값 타입을 지정하지 않고도 리턴이 가능하다고 한다.
마치 ts의 any 같다.
✅ interface{} = TypeScript의 any
Go에서는 모든 타입이 interface{}를 만족하기 때문에, 아래와 같이 어떤 값이든 담을 수 있다.
var v interface{}
v = 123 // int
v = "hello" // string
v = []string{} // slice
🔄 예: TypeScript와 비교
TypeScriptGo
any | interface{} |
Record<string, any> | map[string]interface{} |
any[] | []interface{} |
map[string]interface{} 가 쓰이는 경우는 다음과 같다고 한다.
- 외부 API의 응답 구조가 계속 바뀌는 경우
- 예: JSON 응답 스펙이 매번 다르거나, 필드가 동적으로 생성됨
- 해결: map으로 유연하게 접근
- MongoDB의 자유로운 document 구조를 다룰 때
각 document가 다른 필드를 가질 수 있기 때문에 고정된 struct가 애매할 수 있음
var results []map[string]interface{}
cursor.All(ctx, &results)
3. JSON을 중간 단계에서 파싱만 하고 재구성할 때
- 데이터를 분석하거나, 필터링만 하고 다른 포맷으로 내보낼 경우 struct까지 만들 필요는 없음
따라서 다음과 같이 타입을 정의해주고 쓰는것이 좋을것 같다.
type Product struct {
ID string `json:"id"`
Name string `json:"name"`
Price float64 `json:"price"`
}
var products []Product
728x90
반응형
'개발 > backend(go)' 카테고리의 다른 글
API에서 블록체인 지갑 주소 받아올 때 해야할 필수 처리 (대소문자 처리 & 공백 제거) (2) | 2025.06.18 |
---|---|
Go Gin으로 API 만들기: POST/GET 기본 구조 + Swagger 작성법 (1) | 2025.04.25 |
Go) JWT 발급 및 인증 로직 (백엔드) (0) | 2025.04.10 |
Go 언어로 메타 마스크 로그인 로직, Signature 검증 (백엔드) (0) | 2025.04.09 |
MongoDB+Go 에서의 Cursor를 활용한 다중 데이터 조회 (select all) (0) | 2025.04.08 |
Comments