如何在Go中复现指定的Javascript多层嵌套数组结构
Go 对等JS三层嵌套数组的实现方案
你给出的JS代码是三层嵌套的动态数组结构,对应Go中可以使用三层切片实现,序列化后的JSON和预期完全一致。
直接初始化匹配结构的代码
如果要和你示例的JS结构完全对齐(外层2个元素,每个元素包含5个空的内层数组),可以直接按如下方式定义:
// 最内层元素类型可根据实际业务替换,示例用interface{}兼容任意类型数据 var goSlice = [][][]interface{}{ {{}, {}, {}, {}, {}}, {{}, {}, {}, {}, {}}, }
完整测试验证代码
可以运行以下代码验证JSON序列化结果是否符合预期:
package main import ( "encoding/json" "fmt" ) func main() { // 初始化三层切片结构 goSlice := [][][]interface{}{ make([][]interface{}, 5), // 第一层第一个元素,包含5个空切片 make([][]interface{}, 5), // 第一层第二个元素,包含5个空切片 } // 序列化输出JSON res, err := json.Marshal(goSlice) if err != nil { fmt.Println("序列化失败:", err) return } fmt.Println(string(res)) }
运行输出结果:
[[[],[],[],[],[]],[[],[],[],[],[]]]
补充说明
- 如果最内层数组存储的是固定类型的数据,比如字符串、整数,可以把
interface{}替换为对应类型,比如[][][]int,类型更安全,序列化结果不变。 - 如果你需要长度不可变的定长结构,也可以用数组定义:
var goArr [2][5][]int,序列化后输出结果完全一致。
内容的提问来源于stack exchange,提问作者Nick D
相关产品推荐
相关产品推荐

