Golang : truyền map[string]interface{} type vào function
Khi làm việc với REST API, bạn đôi khi gặp những cấu trúc JSON lồng nhau, và bạn cần truyền một giá trị của cấu trúc này vào hàm để thực hiện một số tính năng nhất định.
Ở đây tôi lấy một ví dụ bạn có hàm có định nghĩa trong package như sau như sau:
func (s *Service) UpdateDue(ID string, data map[string]interface{}) (*Response, error)
Bạn để ý rằng hàm này nhận type
map[string]interface{}
là tham số.
Vậy làm sao để truyền cấu trúc sau vào hàm này :
{
"update": {
"duedate": [
{"set": "2014-05-22"}
]
}
}
Bạn lưu ý trong cấu trúc này ở key
duedate
là một array, như vậy trong phần khai báo giá trị bạn phải dùng []interface{}
Bạn hãy làm như sau:
valueDate := map[string]interface{} {
"update" : map[string]interface{} {
"duedate" : []interface{} {
map[string]interface{} {"set": "2014-05-22"},
},
},
}
Sau khi gán giá trị cho
valueDate
bạn chỉ cần gọi hàm và pass giá trị của valueDate
vào hàm là xong.UpdateDue(ID, valueDate)
Chúc các bạn thành công.