go定义元素为Map类型的切片,定义一个切片类型的map

 基础语法  2022-02-11  admin  558  753

go定义元素为Map类型的切片,定义一个切片类型的map

package main

import (
	"fmt"
	"strconv"
)

func main() {

	// 1.定义元素为Map类型的切片,即元素值为map
	// 方式一:
	s := make([]map[string]string, 3)
	s[0] = make(map[string]string)
	s[0]["name"] = "小明"
	s[0]["address"] = "山东"
	s[1] = make(map[string]string)
	s[1]["name"] = "小红"
	s[1]["address"] = "北京"
	s[2] = map[string]string{
		"name":    "小强",
		"address": "上海",
	}
	fmt.Println(s) // [map[address:山东 name:小明] map[address:北京 name:小红] map[address:上海 name: 小强]]

	// 方式二:
	s2 := []map[string]string{
		{
			"name":    "小明",
			"address": "山东",
		},
		{
			"name":    "小红",
			"address": "北京",
		},
	}
	fmt.Println(s2) // [map[address:山东 name:小明] map[address:北京 name:小红]]

	// 2.定义一个切片类型的map,即元素值是切片
	m := make(map[string][]int)
	ss1 := []int{1, 2}
	ss2 := []int{3, 4}
	m["key1"] = ss1
	m["key2"] = ss2
	fmt.Println(m) // map[key1:[1 2] key2:[3 4]]

	m2 := map[string][]int{
		"key1": {1, 2},
		"key2": {3, 4, 5},
	}
	fmt.Println(m2) // map[key1:[1 2] key2:[3 4 5]]

	//3.定义 [Map [切片 [Map]]] 类型
	var list map[string][]map[string]string
	list = make(map[string][]map[string]string, 0) //必须初始化
	for i := 1; i < 3; i++ {
		var class []map[string]string
		class = make([]map[string]string, 0)
		for j := 1; j < 4; j++ {
			id := strconv.Itoa(i) + "_" + strconv.Itoa(j)
			student := map[string]string{
				"id":   id,
				"name": "学生" + id,
			}
			class = append(class, student)
		}
		list["班级"+strconv.Itoa(i)] = class
	}
	fmt.Println(list)
	//map[班级1:[map[id:1_1 name:学生1_1] map[id:1_2 name:学生1_2] map[id:1_3 name:学生1_3]] 班级2:[map[id:2_1 name:学生2_1] map[id:2_2 name:学生2_2] map[id:2_3 name:学生2_3]]]

	//4.定义 [切片 [切片 [Map]]] 类型
	var list2 [][]map[string]string
	list2 = make([][]map[string]string, 0) //必须初始化
	for i := 1; i < 3; i++ {
		var class []map[string]string
		class = make([]map[string]string, 0)
		for j := 1; j < 4; j++ {
			id := strconv.Itoa(i) + "_" + strconv.Itoa(j)
			student := map[string]string{
				"id":   id,
				"name": "学生" + id,
			}
			class = append(class, student)
		}
		list2 = append(list2, class)
	}
	fmt.Println(list2)
	//[[map[id:1_1 name:学生1_1] map[id:1_2 name:学生1_2] map[id:1_3 name:学生1_3]] [map[id:2_1 name:学生2_1] map[id:2_2 name:学生2_2] map[id:2_3 name:学生2_3]]]

	//5.定义 [切片 [切片]] 类型
	list3 := make([][]int, 0) //必须初始化
	for i := 1; i < 3; i++ {
		var class []int
		class = make([]int, 0)
		for j := 1; j < 4; j++ {
			class = append(class, j)
		}
		list3 = append(list3, class)
	}
	fmt.Println(list3)
	//[[1 2 3] [1 2 3]]

	//6.定义 [map [map]] 类型
	list4 := make(map[string]map[string]string, 0) //必须初始化
	for i := 1; i < 3; i++ {
		student := map[string]string{
			"id":   strconv.Itoa(i),
			"name": "学生" + strconv.Itoa(i),
		}
		list4["班级"+strconv.Itoa(i)] = student
	}
	fmt.Println(list4)
	//map[班级1:map[id:1 name:学生1] 班级2:map[id:2 name:学生2]]
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


linux 系统最简单的安装 go 开发环境步骤

1. 官网下载放在 /godev 目录https://golang.google.cn/dl/或wget https://dl.google.com/go/go1.22.2.linux-amd64.tar.gz或curl -O https://dl.google.com/go/go1.22.2.linux-386.tar.gz2. 解压tar -xvf go1.22.2.linux-amd64.t

esp32 使用mqtt 通讯

esp32 使用mqtt 通讯基于go的mqtt 客户端packagemain import( &quot;fmt&quot; &quot;github.com/gogf/gf/v2/encoding/gjson&quot; &quot;github.com/gogf/gf/v2/frame/g&quot; &quot;gobot.io/x/gobot&quot; &qu

go 生成密码 php的 password_hash go实现

packagemain import( &quot;fmt&quot; &quot;golang.org/x/crypto/bcrypt&quot; ) funcmain(){ hashedPassword:=passwordHash(&quot;123456&quot;) fmt.Println(hashedPassword) hashedPassword=

使用 govcl 开发桌面UI 在 Lazarus IDE 编译中报错

使用 govcl 开发桌面UI 在 Lazarus IDE 编译中报错go build -i -buildmode=exe -ldflags=&quot;-H windowsgui&quot; -tags=&quot;tempdll&quot; -o &quot;project1.exe&quot;flag provided but not defined: -iusage: go build [