В соответствии с этим вопросом и кодом Go сканируйте QueryRow на существующий интерфейс map[string]{} в Go, я пытаюсь получить ключ и значение data["id"]
func Login() func(c *lmhttp.Context, code int, data interface{}) (int, interface{}) {
return func(c *lmhttp.Context, code int, data interface{}) (int, interface{}) {
map_data := data.(map[string]interface{})
fmt.Print(map_data, map_data["id"])
}
}
но я всегда получал ошибку, как показано ниже, большое спасибо за любой совет.
interface conversion: interface {} is LoginResp, not map[string]interface {}
И я также вставляю свой код Response
, как показано ниже:
func (c *Context) Response(data interface{}) {
c.result(http.StatusOK, data)
}
🤔 А знаете ли вы, что...
В Go используется строгая статическая типизация.
Наконец, я получаю значение с помощью приведенного ниже кода, используйте Marshal
, чтобы получить JSON
данные, затем map
и Unmarshal
,
json_str, jsonErr := json.Marshal(data)
if json_str != nil {
fmt.Printf("%v", jsonErr)
}
m := make(map[string]interface{})
err := json.Unmarshal([]byte(json_str), &m)
if err != nil {
fmt.Println(err)
fmt.Println("This is ID", m["id"])
}