golang golang地图列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang golang地图列表相关的知识,希望对你有一定的参考价值。

package main

import (
	"fmt"
)

func main() {
	var v = []map[int32][]int{}
	for i := 0; i <= 10; i++ {
		var m = make(map[int32][]int)
		
		var vs = []int{}
		for j := 1; j <= 10; j++ {
			vs = append(vs, j)
		}
		
		m[int32(i)] = vs
		
		v = append(v, m)
	}
	fmt.Printf("%v\n", v)
	fmt.Println("Hello, playground")
}

// [map[0:[1 2 3 4 5 6 7 8 9 10]] map[1:[1 2 3 4 5 6 7 8 9 10]] map[2:[1 2 3 4 5 6 7 8 9 10]] map[3:[1 2 3 4 5 6 7 8 9 10]] map[4:[1 2 3 4 5 6 7 8 9 10]] map[5:[1 2 3 4 5 6 7 8 9 10]] map[6:[1 2 3 4 5 6 7 8 9 10]] map[7:[1 2 3 4 5 6 7 8 9 10]] map[8:[1 2 3 4 5 6 7 8 9 10]] map[9:[1 2 3 4 5 6 7 8 9 10]] map[10:[1 2 3 4 5 6 7 8 9 10]]]
// Hello, playground

golang golang嵌套地图相等

func main() {
	//var data Data
	data := map[string]interface{}{
		"A": 1,
		"B": 2,
		"C": map[string]interface{}{
			"D": 3,
			"E": 4,
			"G": map[string]interface{}{
				"H": 123,
				"Q": 456,
			},
		},
		"F":    5,
		"DATE": "dd",
	}

	newMap1 := flattenMap(data)
	log.Printf("%v\n", newMap1)

	data2 := map[string]interface{}{
		"A": 1,
		"B": 2,
		"C": map[string]interface{}{
			"D": 3,
			"E": 4,
			"G": map[string]interface{}{
				"H": 123,
				"Q": 456,
			},
		},
		"F":    5,
		"DATE": "dd",
	}
	newMap2 := flattenMap(data2)
	log.Printf("%v\n", newMap2)

	log.Println(mapEqual(newMap1, newMap2))
}

func mapEqual(m1, m2 map[string]interface{}) bool {
	for k, v := range m1 {
		v1, ok := m2[k]
		if !ok {
			return false
		}
		if v1 != v {
			return false
		}
		////v2, ok1 := v.(int)
		////v3, ok2 := v1.(int)
		////if !ok1 || !ok2 || v2 != v3 {
		////	return false
		////}
		//switch v.(type) {
		//case int:
		//	v2, ok1 := v1.(int)
		//	if !ok1 {
		//		return false
		//	}
		//	v3 := v.(int)
		//	if v2 != v3 {
		//		return false
		//	}
		//
		//case time.Time:
		//
		//}
	}
	return true
}

func map2Json(m map[string]interface{}) (string, error) {
	b, err := json.Marshal(&m)
	return string(b), err
}

func flattenMap(m map[string]interface{}) map[string]interface{} {
	d := make(map[string]interface{})
	for k, v := range m {
		v1, ok := v.(map[string]interface{})
		if ok {
			flatMap(d, v1, k)
		} else {
			d[k] = v
		}
	}
	return d
}

func flatMap(d, m map[string]interface{}, oldKey string) {
	for k, v := range m {
		v1, ok := v.(map[string]interface{})
		if ok {
			flatMap(d, v1, oldKey+"."+k)
		} else {
			d[oldKey+"."+k] = v
		}
	}
}

以上是关于golang golang地图列表的主要内容,如果未能解决你的问题,请参考以下文章

golang golang嵌套地图相等

golang golang flatten嵌套地图

golang golang解析嵌套的地图

遍历 golang 地图

在 golang 中使用私有地图、切片的最佳实践是啥?

Golang 创建切片地图