1. package main
    2. import "fmt"
    3. func main() {
    4. // 1、make创建map类型的数据
    5. // var userinfo = make(map[string]string)
    6. // userinfo["username"] = "张三"
    7. // userinfo["age"] = "20"
    8. // userinfo["sex"] = "男"
    9. // // fmt.Println(userinfo)
    10. // fmt.Println(userinfo["username"])
    11. //2、map 也支持在声明的时候填充元素
    12. // var userinfo = map[string]string{
    13. // "username": "张三",
    14. // "age": "20",
    15. // "sex": "男",
    16. // }
    17. // fmt.Println(userinfo)
    18. // 3、第三种创建map类型数据的方法
    19. userinfo := map[string]string{
    20. "username": "张三",
    21. "age": "20",
    22. "sex": "男",
    23. }
    24. fmt.Println(userinfo)
    25. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. // var userinfo = map[string]string{
    5. // "username": "张三",
    6. // "age": "20",
    7. // "sex": "男",
    8. // }
    9. // fmt.Println(userinfo["username"]) //张三
    10. //for range循环遍历map类型的数据
    11. var userinfo = map[string]string{
    12. "username": "张三",
    13. "age": "20",
    14. "sex": "男",
    15. }
    16. for k, v := range userinfo {
    17. fmt.Printf("key:%v value:%v\n", k, v)
    18. }
    19. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. //map类型数据的curd
    5. //1、创建 修改map类型的数据
    6. // var userinfo = make(map[string]string)
    7. // userinfo["username"] = "张三"
    8. // userinfo["age"] = "20"
    9. // fmt.Println(userinfo)
    10. //2、创建 修改map类型的数据
    11. // var userinfo = map[string]string{
    12. // "username": "张三",
    13. // "age": "20",
    14. // }
    15. // userinfo["username"] = "李四"
    16. // fmt.Println(userinfo)
    17. //3、获取 查找map类型的数据
    18. // var userinfo = map[string]string{
    19. // "username": "张三",
    20. // "age": "20",
    21. // }
    22. // fmt.Println(userinfo["username"]) //获取
    23. // v, ok := userinfo["age"]
    24. // fmt.Println(v, ok) //20 true
    25. // v, ok := userinfo["xxxxx"]
    26. // fmt.Println(v, ok) // 空 和 false
    27. //4、删除map数据里面的key以及对于的值
    28. var userinfo = map[string]string{
    29. "username": "张三",
    30. "age": "20",
    31. "sex": "男",
    32. "height": "180cm",
    33. }
    34. fmt.Println(userinfo)
    35. delete(userinfo, "sex")
    36. fmt.Println(userinfo)
    37. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. //我们想在切片里面放一系列用户的信息,这时候我们就可以定义一个元素为map类型的切片
    5. // var userinfo = []string{"张三", "李四"}
    6. var userinfo = make([]map[string]string, 2, 2)
    7. // fmt.Println(userinfo[0]) //map[] map不初始化的默认值nil
    8. // fmt.Println(userinfo[0] == nil) //true
    9. if userinfo[0] == nil {
    10. userinfo[0] = make(map[string]string)
    11. userinfo[0]["username"] = "张三"
    12. userinfo[0]["age"] = "20"
    13. userinfo[0]["height"] = "180cm"
    14. }
    15. if userinfo[1] == nil {
    16. userinfo[1] = make(map[string]string)
    17. userinfo[1]["username"] = "李四"
    18. userinfo[1]["age"] = "22"
    19. userinfo[1]["height"] = "170cm"
    20. }
    21. fmt.Println(userinfo)
    22. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. //如果我们想在切片里面放一系列用户的信息的时候我们就可以定义一个map类型的切片
    5. var userinfo = make([]map[string]string, 3, 3)
    6. // fmt.Println(userinfo[0] == nil)
    7. if userinfo[0] == nil {
    8. userinfo[0] = make(map[string]string)
    9. userinfo[0]["username"] = "张三"
    10. userinfo[0]["age"] = "20"
    11. }
    12. if userinfo[1] == nil {
    13. userinfo[1] = make(map[string]string)
    14. userinfo[1]["username"] = "李四"
    15. userinfo[1]["age"] = "22"
    16. }
    17. if userinfo[2] == nil {
    18. userinfo[2] = make(map[string]string)
    19. userinfo[2]["username"] = "王五"
    20. userinfo[2]["age"] = "22"
    21. }
    22. for _, v := range userinfo {
    23. // fmt.Println(v)
    24. for key, value := range v {
    25. fmt.Printf("key:%v--value:%v\n", key, value)
    26. }
    27. }
    28. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. //如果我们想在map对象中存放一系列的属性的时候,我们就可以把map类型的值定义成切片
    5. // var userinfo = make(map[string]string)
    6. // userinfo["username"] = "张三"
    7. // userinfo["hobby"] = "睡觉"
    8. var userinfo = make(map[string][]string)
    9. userinfo["hobby"] = []string{
    10. "吃饭",
    11. "睡觉",
    12. "敲代码",
    13. }
    14. userinfo["work"] = []string{
    15. "php",
    16. "golang",
    17. "前端",
    18. }
    19. // fmt.Println(userinfo)
    20. for _, v := range userinfo {
    21. // fmt.Println(k, v)
    22. for _, value := range v {
    23. fmt.Println(value)
    24. }
    25. }
    26. }
    1. package main
    2. import "fmt"
    3. func main() {
    4. /*
    5. 值类型 :改变变量副本值的时候,不会改变变量本身的值 (基本数据类型、数组)
    6. 引用类型:改变变量副本值的时候,会改变变量本身的值 (切片、map)
    7. */
    8. //map类型也是引用数据类型
    9. var userinfo1 = make(map[string]string)
    10. userinfo1["username"] = "张三"
    11. userinfo1["age"] = "20"
    12. userinfo2 := userinfo1
    13. userinfo2["username"] = "李四"
    14. fmt.Println(userinfo1)
    15. fmt.Println(userinfo2)
    16. }
    1. package main
    2. import (
    3. "fmt"
    4. "sort"
    5. )
    6. func main() {
    7. //map的排序
    8. map1 := make(map[int]int, 10)
    9. map1[10] = 100
    10. map1[1] = 13
    11. map1[4] = 56
    12. map1[8] = 90
    13. map1[11] = 100
    14. map1[2] = 13
    15. // fmt.Println(map1)
    16. /*
    17. 1 13
    18. 4 56
    19. 10 100
    20. 8 90
    21. */
    22. // for key, val := range map1 {
    23. // fmt.Println(key, val)
    24. // }
    25. //需求:按照key升序输出map的key=>value (签名算法)
    26. //1、把map的key放在切片里面
    27. var keySlice []int
    28. for key, _ := range map1 {
    29. keySlice = append(keySlice, key)
    30. }
    31. fmt.Println(keySlice) //[11 10 4 8 2 1]
    32. //2、让key进行升序排序
    33. sort.Ints(keySlice)
    34. fmt.Println(keySlice) //[1 2 4 8 10 11]
    35. //3、循环遍历key输出map的值
    36. for _, v := range keySlice {
    37. fmt.Printf("key=%v value=%v\n", v, map1[v])
    38. }
    39. }
    1. package main
    2. import (
    3. "fmt"
    4. "strings"
    5. )
    6. func main() {
    7. // 写一个程序,统计一个字符串中每个单词出现的次数。比如:”how do you do”中how=1 do=2 you=1。
    8. // this is golang
    9. var str = "how do you do"
    10. var strSlice = strings.Split(str, " ")
    11. fmt.Println(strSlice)
    12. var strMap = make(map[string]int)
    13. for _, v := range strSlice {
    14. strMap[v]++
    15. }
    16. fmt.Println(strMap)
    17. }