go语言学习 21-1 map (下)

1,定义元素为map类型的切片

package main

import (
	"fmt"
)

func main() {
	var qp = make([]map[string]string, 3, 3)
	fmt.Println(qp[0])        //打印切片0下标下是否有值  如果为空则默认为nil
	fmt.Println(qp[0] == nil) //qp[0] == nil 为true
	if qp[0] == nil {
		qp[0] = make(map[string]string)
		qp[0]["username"] = "zhangsan"
		qp[0]["email"] = "zhansan@qq.com"
	}

	if qp[1] == nil {
		qp[1] = make(map[string]string)
		qp[1]["username"] = "李四"
		qp[1]["email"] = "lisi@qq.com"
	}

	fmt.Println(qp)

}

2,循环遍历类型为map的切片

 

package main

import (
	"fmt"
)

func main() {
	var qp = make([]map[string]string, 2, 2)
	if qp[0] == nil {
		qp[0] = make(map[string]string)
		qp[0]["username"] = "zhangsan"
		qp[0]["email"] = "zhansan@qq.com"
	}

	if qp[1] == nil {
		qp[1] = make(map[string]string)
		qp[1]["username"] = "李四"
		qp[1]["email"] = "lisi@qq.com"
	}

	for _, v := range qp {
		//mt.Println(v) //打印第一维数据
		for _, vv := range v {
			fmt.Println(vv)
		}
	}
}

把map类型的值定义成切片

package main

import "fmt"

func main() {
	//把map类型的值定义成切片
	userInfo := make(map[string][]string)
	userInfo["hobby"] = []string{
		"吃饭",
		"唱歌",
		"谈恋爱",
	}
	userInfo["work"] = []string{
		"工作",
		"出差",
		"演唱会",
	}
	fmt.Println(userInfo)

	for _, v := range userInfo {
		for _, vv := range v {
			fmt.Println(vv)
		}
	}
}

map类型的数据 是值类型还是引用类型呢? (引用数据类型)

map的排序  map里的元素是无序的

①升序排序

给这个map排序

package main


import "fmt"

func main() {
	//修改map的值
	score := make(map[int]int,100)
	score[100] = 80
	score[1] = 60
	score[20] = 70
	score[49] =10

	fmt.Println(score)
}

默认是无序的

思路1 可以把key 单独拿出来放到切片里

package main

import (
	"fmt"
	"sort"
)

func main() {
	//修改map的值
	score := make(map[int]int, 100)
	score[100] = 80
	score[1] = 60
	score[20] = 70
	score[49] = 10

	fmt.Println(score)
	var keys []int
	for k, _ := range score {
		keys = append(keys, k)
	}
	//fmt.Println(keys)
	//对切片升序排序
	sort.Ints(keys) //[20 1 100 49]
	//fmt.Println(keys) //[1 20 49 100]

	for _, v := range keys {
		fmt.Printf("k=%v  v=%v\n", v, score[v])
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值