일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- 계정추상화
- 머신러닝기초
- ethers v6
- 러스트 기초 학습
- ethers type
- multicall
- ethers websocket
- 티스토리챌린지
- SBT표준
- rust 기초
- 스마트컨트렉트 함수이름 중복 호출
- erc4337
- 스마트컨트렉트테스트
- vue기초
- ambiguous function description
- 러스트 기초
- 스마트 컨트렉트 함수이름 중복
- chainlink 설명
- 컨트렉트 배포 자동화
- 체인의정석
- erc4337 contract
- Vue
- 러스트기초
- ethers
- git rebase
- 오블완
- Vue.js
- ethers typescript
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)' 카테고리의 다른 글
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 |
Go Swagger, 패키지 관리, hash 함수 (2) | 2025.04.08 |
Comments