gpt4 book ai didi

arrays - 如何在 Go 中将任何数据类型转换为字节

转载 作者:行者123 更新时间:2023-12-01 22:43:12 25 4
gpt4 key购买 nike

我正在尝试创建一个将任何数据类型转换为字节数组的 for 循环......这就是我现在所拥有的

var arrByte [][]byte
for _,v := range *arr.(*[]interface{}) {
string := fmt.Sprint(v) // What can I put here so that I dont have to convert to string
arrByte = append(arrByte, []byte(string))
}
这段代码的问题是我无法将它转换回它的数据类型。那么如何直接更改它以保持格式正确,以便我以后可以运行它?
var arrInterface []interface{}

for _,v := range arrByte {
data := binary.BigEndian.Uint64(v)
arrInterface = append(arrInterface, data)
}

最佳答案

首先,关于术语的说明:您似乎在谈论 byte slice 而不是字节数组。 Go 中的数组是固定长度的,所以调用 append对他们不起作用。见 here更多。
现在回答你的问题...

I am trying to make a for loop that will convert any data type to a byte array...


这是不可能的,除非在最肤浅、毫无意义的意义上。例如,如果您有一个类型为 net.Conn 的变量。 ,将其转换为字节将为您提供一个毫无意义的值,因为它仅与一个特定的事件网络连接一起才有意义。
但是,假设您没有像这样引用临时状态的变量,将任意变量转换为字节 slice 的最简单方法是使用类似 gob encoding .
但是,这也有局限性,在序列化结构时,它只能访问导出的字段,或者通过 GobEncoder 公开的字段。界面。 This Q&A explains why this limitation exists .
现在,在某些情况下,您可以通过反射来解决此限制,但是这样做非常麻烦,而且通常是不明智的,因为未导出的字段通常引用临时状态(请参阅上面的注释)。
总而言之:不可能对所有数据类型都有意义地执行此操作。对于许多数据类型来说很难做到这一点,而对于“普通”数据类型来说做到这一点是微不足道的。

关于arrays - 如何在 Go 中将任何数据类型转换为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62845189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com