Go应用程序在浮点上使用组_CONCAT进行SQL查询时返回[]uint8,而不是实际的[]float64

Go应用程序在浮点上使用组_CONCAT进行SQL查询时返回[]uint8,而不是实际的[]float64,sql,go,Sql,Go,在我的go应用程序进行的查询中使用group_concat时出现问题 你知道为什么一组彩车看起来像一个移动中的[]uint8吗 似乎也不能正确地转换吸盘 它肯定是浮动的,我可以在原始查询结果中看到它,但当我在go中执行相同的查询并尝试进行扫描时,go会抱怨它是[]uint8而不是[]float64(实际上是)试图转换为浮动的结果给了我错误的值(而且这些值太多) 例如,在数据库中,我查询并获得相关列的2个浮点值,如下所示: "5650.50, 5455.00" 53,55,56,48,46,48

在我的go应用程序进行的查询中使用group_concat时出现问题

你知道为什么一组彩车看起来像一个移动中的[]uint8吗

似乎也不能正确地转换吸盘

它肯定是浮动的,我可以在原始查询结果中看到它,但当我在go中执行相同的查询并尝试进行扫描时,go会抱怨它是
[]uint8
而不是
[]float64
(实际上是)试图转换为浮动的结果给了我错误的值(而且这些值太多)

例如,在数据库中,我查询并获得相关列的2个浮点值,如下所示:

"5650.50, 5455.00"
53,55,56,48,46,48,48
然而,在go端,go看到的是
[]uint8
,而不是
[]float64
。为什么会发生这种情况?如何解决这个问题以获得实际结果

我的问题是,我必须将此SQL与
组_concat
一起使用,由于我正在使用的数据库的性质,这是获取信息的最佳方式,更重要的是,查询本身工作良好,返回函数所需的数据,但由于类型问题,现在我无法读取它。对这些并不陌生,但Go今天不跟我合作

我很高兴知道围棋为什么要这样做,也很高兴知道如何处理它

例如:

SELECT ID, getDistance(33.1543,-110.4353, Loc.Lat, Loc.Lng) as distance,
GROUP_CONCAT(values) FROM stuff INNER JOIN device on device.ID = stuff.ID WHERE (someConditionsETC) GROUP BY ID ORDER BY ID
当与实际数据库(不在我的应用程序中)交互时,实际结果是

很明显是两个浮球

当从Go查询并尝试在中扫描结果时,相同的结果会生成uint8的切片。如果我遍历并打印这些值,得到的值远远超过2,它们是
uint8
(字节),如下所示:

"5650.50, 5455.00"
53,55,56,48,46,48,48
不知道Go希望我怎么处理这件事

解决方案。。。。愚蠢、简单、不太明显:

解决方案:

crazyBytes := []uint8("5760.00,5750.50")
    aString := string(crazyBytes)
strSlice := strings.Split(aString,",") // string representation of our array (of floats)
var floatz []float64
for _, x := range strSlice {
    fmt.Printf("At last, Float: %s \r\n",x)
    f,err := strconv.ParseFloat(x,64)
    if err != nil { fmt.Printf("Error: %s",err) }
    floatz = append(floatz, f)
    fmt.Printf("as float: %s \r\n", strconv.FormatFloat(f,'f',-1,64))
}

是的,现在很明显了。

GROUP\u CONCAT返回一个字符串。所以在Go中,您得到的是字符的字节数组,而不是浮点。您发布的
53,55,56,48,46,48,48
结果将转换为字符串“5780.00”,看起来确实像您的值之一。因此,您需要修复SQL以返回浮点数,或者在Go中使用字符串和strconv模块来解析字符串并将其转换为浮点数。我认为前一种方法更好,但这取决于您。

在发布此问题之前,您是否尝试过做一些研究???我敢肯定,如果你在谷歌上搜索“mysql将浮点转换为int”,会有很多例子。是的,如果这就是我想做的,那将非常有用。每个值都作为[]uint8([]字节的别名)从数据库传输,然后驱动程序将它们解码为Go类型。驱动程序本机不支持的类型必须实现。如果您想要一个具体的答案,请添加扫描结果集的代码,包括所有相关类型。我一直在寻找sql的实现示例。Scanner在阅读了相同的示例后,还没有找到一个有意义的示例。每个人都说“只需实现sql.Scanner”,但没有人谈论如何做到这一点。无论如何,谢谢你的回答,我正在为这个问题添加我的解决方案。再次感谢,你似乎确实找到了问题的根源,GROUP_CONCAT返回了一个字符串,我无法避免在这个查询中使用它。。。。。我希望有一个数组/片。[]字节片段现在有了意义,我很高兴我发现[]字节是我的私生子字符串,从那里解析它很简单。