我想测试我的序列化格式是否有鲁棒性,并想序列化一个嵌套数组。序列化实际上在某个时候终止,但是我不知道确切的深度。现在,我只是手动定义一个大数组,但是我想以编程方式进行操作,因此我可以弄清楚深度到底何时过高。为每次迭代更改代码很繁琐...
l := [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]string {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{"a"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
我想要的是这样的
l := "a"
while(1){
l = {l} //nest the slice/array once more
print("round ", i)
i++
}
我是Golang新手,在这种情况下,我不知道该如何避开类型安全性。
答案 0 :(得分:2)
在执行过程中,您无法更改变量的类型,因此您需要将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)