go语言中map使用哈希表,必须可以比较相等

除了slice,map,function的内建类型都可以作为key

Struct类型不包括上述字段,也可作为key

map中的key是无序的

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "sort"
  6. )
  7.  
  8. var (
  9. barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
  10. "delta": 87, "echo": 56, "foxtrot": 12,
  11. "golf": 34, "hotel": 16, "indio": 87,
  12. "juliet": 65, "kili": 43, "lima": 98}
  13. )
  14. func main() {
  15. m:=map [string]string {
  16. "name":"fyf",
  17. "course":"golang",
  18. "site":"imooc",
  19. "quality":"notbad",
  20. }
  21.  
  22. m2:=make(map[string]int)//空map一般就用make定义 m2==empty map
  23.  
  24. var m3 map[string]string//m3 == nil
  25. fmt.Println(m,m2,m3)
  26. fmt.Println("")
  27.  
  28. //map的遍历
  29. fmt.Println("map的遍历")
  30. for k,v :=range m{
  31. fmt.Println(k,v)
  32. }
  33. fmt.Println("")
  34.  
  35. //mao的操作
  36. fmt.Println("得到value")
  37. //如果map中的key不存在,则会得到一个nil值
  38. courseName:=m["course"]
  39. fmt.Println(courseName)
  40. //判断key是否存在map中
  41. courseName2,ok:=m["course"]
  42. fmt.Println(courseName2,ok)
  43. if couseName,ok:=m["couse"]; ok{
  44. fmt.Println(couseName)
  45. }else {
  46. fmt.Println("key 不存在")
  47. }
  48.  
  49. fmt.Println("")
  50. fmt.Println("删除value")
  51. name,ok:=m["name"]
  52. fmt.Println(name,ok)
  53.  
  54. delete(m,"name")
  55. name,ok = m["name"]
  56. fmt.Println(name,ok)
  57.  
  58. fmt.Println("unsorted:")
  59. for k, v := range barVal {
  60. fmt.Printf("Key: %v, Value: %v / ", k, v)
  61. }
  62. keys := make([]string, len(barVal))
  63. i := 0
  64. for k, _ := range barVal {
  65. keys[i] = k//往数组里面放值
  66. i++
  67. }
  68. fmt.Println("")
  69. fmt.Println("")
  70. fmt.Println(keys)
  71. sort.Strings(keys)
  72. fmt.Println()
  73. fmt.Println("sorted:")
  74. for _, k := range keys {
  75. fmt.Printf("Key: %v, Value: %v / ", k, barVal[k])
  76. }
  77.  
  78. fmt.Println("")
  79. fmt.Println("")
  80. items := make([]map[int]int, 5)
  81. for i:= range items {
  82. items[i] = make(map[int]int, 1)
  83. items[i][1] = 2//key is 1, value is 2
  84. }
  85. fmt.Printf("Version A: Value of items: %v\n", items)
  86. }

  

go_Map的更多相关文章

随机推荐

  1. android中LayoutInflater.from(context).inflate的分析

    在应用中自定义一个view,需要获取这个view的布局,需要用到 (LinearLayout) LayoutInflater.from(context).inflate(R.layout.conten ...

  2. HDU2888 Check Corners(二维RMQ)

    有一个矩阵,每次查询一个子矩阵,判断这个子矩阵的最大值是不是在这个子矩阵的四个角上 裸的二维RMQ #pragma comment(linker, "/STACK:1677721600&qu ...

  3. flow flow-typed 定义简单demo

    flow-typed 安装 全局 npm install -g flow-typed 测试代码 一个简单全局函数 目录根目录 flow-typed userLibDef.js declare func ...

  4. sysstat工具

    sysstat工具可以监控系统的IO,CPU,SWAP,LOAD,NETWORK,DISK 安装后,系统会生成定时任务脚本 路径:/etc/cron.d/sysstat 内容: # Run syste ...

  5. CentOS7.2 安装redis 3.0.6集群

    1.环境确认 a.系统版本查看 [hadoop@p168 ~]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)  b.安装依 ...

  6. GCC 三

    前记: 经常浏览博客园的同学应该会觉得本文有标题党之嫌,这个标题的句式来自于MiloYip大牛的大作<C++强大背后>,在此,向Milo兄致意. GCC,全称GNU Compiler Co ...

  7. android 点击返回键 以及 加载activity 生命周期 记录。。。,一目了然

    简叙 Activity 生命周期及android 返回按钮捕捉   @Override protected void onPostCreate(Bundle savedInstanceState) { ...

  8. [正经分析] DAG上dp两种做法的区别——拓扑序与SPFA

    在下最近刷了几道DAG图上dp的题目. 要提到的第一道是NOIP原题<最优贸易>.这是一个缩点后带点权的DAG上dp,它同时规定了起点和终点. 第二道是洛谷上的NOI导刊题目<最长路 ...

  9. Java--普通代码块静态代码块执行顺序

    class B { public B() { super(); System.out.println("构造器B"); } { System.out.println("普 ...

  10. HDU 2201 熊猫阿波的故事

    熊猫阿波的故事 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...