我正在使用 Go 尝试从 Firestore 中提取一些文档,但遇到了很大的障碍:无论我多么努力,我都无法从查询本身中提取数据。当我打印doc.Data()或无论它是什么时,它都可以正常工作:map[Ext: ID:107677035991703552 Kind:link Start:0.0 Stop:8.0 URL:ONHPHmNV0m4]我愿意:iter := client.Collection("intro-requests").Documents(ctx)for { doc, err := iter.Next() if err == iterator.Done { break } var temp Request doc.DataTo(&temp) fmt.Println(temp) requests = append(requests, temp) for _, request := range requests { fmt.Println(doc.Data()) createVote(s, request) } fmt.Println(doc.Data())}根据谷歌示例,但打印temp哪个,我得到这个:{ link 0 0 }但有时也这样:{ 0 0 }有时是这样的:{ link 0 0 ONHPHmNV0m4 }是什么赋予了?我什至无法理解这里发生了什么。我也找不到任何其他有效的例子,因为谷歌的所有例子都只是打印地图,它在 100% 的时间内都有效。几乎感觉地图正在变成一个字节数组或其他东西,而程序只是试图从中挽救一些数字。这是我的课:type Request struct { ID string `json:"ID"` Kind string `json:"Kind"` Start float64 `json:"Start"` Stop float64 `json:"Stop"` URL string `json:"URL"` Ext string `json:"Ext"`}我试过使用第三方反序列化包,但没有任何改变......有什么线索吗?
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
事实证明 Go 不能反序列化Float64
, 只有Nil
, Bool
,Int64
和String
. 奇怪的是,类型错误之类的东西会导致这种行为。
我把我float64
的s换成了string
s,然后就用了strconv.ParseFloat()
。问题解决了
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报
0/150
提交
取消