1. // 先声明map
    2. var m1 map[string]string
    3. // 再使用make函数创建一个非nil的map,nil map不能赋值
    4. m1 = make(map[string]string)
    5. // 最后给已声明的map赋值
    6. m1["a"] = "aa"
    7. m1["b"] = "bb"
    8. // 直接创建
    9. m2 := make(map[string]string)
    10. // 然后赋值
    11. m2["a"] = "aa"
    12. m2["b"] = "bb"
    13. // 初始化 + 赋值一体化
    14. m3 := map[string]string{
    15. "a": "aa",
    16. "b": "bb",
    17. }
    18. // ==========================================
    19. // 查找键值是否存在
    20. if v, ok := m1["a"]; ok {
    21. fmt.Println(v)
    22. } else {
    23. fmt.Println("Key Not Found")
    24. }
    25. // 遍历map
    26. for k, v := range m1 {
    27. fmt.Println(k, v)
    28. }
    1. package main
    2. import (
    3. "fmt"
    4. "user"
    5. )
    6. type Person struct {
    7. ID string
    8. Name string
    9. Address string
    10. }
    11. func main() {
    12. userDB := make(map[string](*user.User)) //注意写法
    13. //初始化,注意对数组的初始化
    14. u := new(user.User)
    15. u.SetAge(12)
    16. u.SetName("张三")
    17. u.SetSex("男")
    18. u.SetPhone("15902783102")
    19. userDB["u1"] = u
    20. v, ok := userDB["u1"] //获取map值 key为'u1'
    21. if !ok {
    22. fmt.Println(" 没有找到信息")
    23. return
    24. }
    25. //打印出全部值 和各个分值
    26. fmt.Println(v.String())
    27. fmt.Printf("userDB[u1] = \n {name=%v \n age=%v \n sex=%v \n phone=%v \n}", v.GetName(), v.GetAge(), v.GetSex(), v.GetPhone())
    28. personDB := make(map[string]Person)
    29. var person = Person{"12346", "Xym", "bbb"}
    30. personDB["p1"] = person
    31. p, ok := personDB["p1"] //获取map值 key为'u1'
    32. if !ok {
    33. fmt.Println(" 没有找到信息")
    34. return
    35. }
    36. //打印出全部值 和各个分值
    37. fmt.Printf(" \n personDB[p1] = \n {ID=%v \n Name=%v \n address=%v \n}", p.ID, p.Name, p.Address)
    38. // 先声明map
    39. //var a map[string]string
    40. //a["b"] = "c" //这样会报错的,要先初始化内存
    41. //a = make(map[string]string)
    42. //a["b"] = "c" //这样才不会错
    43. var m1 map[string]string
    44. // 再使用make函数创建一个非nil的map,nil map不能赋值
    45. m1 = make(map[string]string)
    46. // 最后给已声明的map赋值
    47. m1["a"] = "aa"
    48. m1["b"] = "bb"
    49. m1["c"] = "cc"
    50. m1["d"] = "dd"
    51. fmt.Println("\n", m1) //输出元素的顺序是随机的,go语言中map是无序的
    52. // 直接创建
    53. m2 := make(map[string]string)
    54. m2["a"] = "aa"
    55. m2["b"] = "bb"
    56. fmt.Println("\n", m2)
    57. // 初始化 + 赋值一体化 注意最后一个元素后面也需要带上逗号的
    58. m3 := map[string]string{
    59. "a": "aa",
    60. "b": "bb",
    61. "c": "cc",
    62. "xx": "xx",
    63. "d": "dd", //注意最后一个元素后面也需要带上逗号的
    64. }
    65. fmt.Println("\n", m3)
    66. //删除一个key对应的元素 map的删除操作
    67. fmt.Println("删除之前", m3)
    68. delete(m3, "a")
    69. fmt.Println("删除之后", m3)
    70. //map的遍历
    71. fmt.Println("\n 遍历输出map")
    72. for k, v := range m3 {
    73. fmt.Printf("key=%v,val=%v \n", k, v) //无序的输出
    74. }
    75. }
    1. package user
    2. import (
    3. "strconv"
    4. )
    5. type User struct {
    6. name string
    7. age int
    8. sex string
    9. phone string
    10. }
    11. func (s *User) SetName(name string) {
    12. s.name = name
    13. }
    14. func (s *User) GetName() string {
    15. return s.name
    16. }
    17. func (s *User) SetAge(age int) {
    18. s.age = age
    19. }
    20. func (s *User) GetAge() int {
    21. return s.age
    22. }
    23. func (s *User) String() string {
    24. return "name is " + s.name + ",age is " + strconv.Itoa(s.age) + " ,sex=" + s.sex + " ,phone=" + s.phone
    25. }
    26. func (s *User) SetSex(sex string) {
    27. s.sex = sex
    28. }
    29. func (s *User) GetSex() string {
    30. return s.sex
    31. }
    32. func (s *User) SetPhone(phone string) {
    33. s.phone = phone
    34. }
    35. func (s *User) GetPhone() string {
    36. return s.phone
    37. }
    38. func (User) Print() string {
    39. return "print"
    40. }

    image.jpeg