arrays - 以编程方式创建嵌套数组
问题描述
我想测试我的序列化格式的鲁棒性,并想序列化一个嵌套数组。序列化实际上在某个时候死了,但我不知道确切的深度。现在我只是手动定义一个大数组,但我想以编程方式完成,所以我可以弄清楚深度何时太高。为每次迭代更改代码很乏味......
l := [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]string {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
我想要的是这样的:
l := "a"
while(1){
l = {l} //nest the slice/array once more
print("round ", i)
i++
}
我是 Golang 新手,我不知道在这种情况下如何绕过类型安全。
解决方案
在 go 中,您无法更改变量的类型,因此您需要使用 interface{} 作为类型,var l interface{}
现在您可以执行以下操作:
l = "a"
for i:= 0;i<3;i++{
l = []interface{}{l}
}
打印 l 将给出输出[[[a]]]
,与[][][]string{{{"a"}}}
.
一个问题是你失去了你的类型,并且不可能做一些像l[0][0][0]
获得价值的事情。就我现在而言,您需要投射所有内容l.([]interface{})[0].([]interface{})[0].([]interface{})[0].(string)
推荐阅读
- html - 我们应该如何在 django 中使用 google 分析脚本?
- android - Android 标签和 UWP 之间的 Xamarin Forms 差异
- excel - 让 SumIf 忽略单词?
- java - fmt:setBundle 在多用户中无法正常工作
- c# - 将内联数据与类数据相结合
- java - IOEXCEPTION 错误在 FXML 中一次又一次。试图将 FXML 文件放在 ListView 中的列表元素上
- node.js - Nodejs套接字io连接错误ERR_CERT_AUTHORITY_INVALID
- php - 将cordova fileEntry 对象附加到formData
- typescript - 带有 JSON.stringify 的 Typescript 数组映射会产生错误
- python - 仅从列表中的字符串中获取数字