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

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

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

map中的key是无序的

package main

import (
"fmt"
"sort"
) var (
barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
"delta": 87, "echo": 56, "foxtrot": 12,
"golf": 34, "hotel": 16, "indio": 87,
"juliet": 65, "kili": 43, "lima": 98}
)
func main() {
m:=map [string]string {
"name":"fyf",
"course":"golang",
"site":"imooc",
"quality":"notbad",
} m2:=make(map[string]int)//空map一般就用make定义 m2==empty map var m3 map[string]string//m3 == nil
fmt.Println(m,m2,m3)
fmt.Println("") //map的遍历
fmt.Println("map的遍历")
for k,v :=range m{
fmt.Println(k,v)
}
fmt.Println("") //mao的操作
fmt.Println("得到value")
//如果map中的key不存在,则会得到一个nil值
courseName:=m["course"]
fmt.Println(courseName)
//判断key是否存在map中
courseName2,ok:=m["course"]
fmt.Println(courseName2,ok)
if couseName,ok:=m["couse"]; ok{
fmt.Println(couseName)
}else {
fmt.Println("key 不存在")
} fmt.Println("")
fmt.Println("删除value")
name,ok:=m["name"]
fmt.Println(name,ok) delete(m,"name")
name,ok = m["name"]
fmt.Println(name,ok) fmt.Println("unsorted:")
for k, v := range barVal {
fmt.Printf("Key: %v, Value: %v / ", k, v)
}
keys := make([]string, len(barVal))
i := 0
for k, _ := range barVal {
keys[i] = k//往数组里面放值
i++
}
fmt.Println("")
fmt.Println("")
fmt.Println(keys)
sort.Strings(keys)
fmt.Println()
fmt.Println("sorted:")
for _, k := range keys {
fmt.Printf("Key: %v, Value: %v / ", k, barVal[k])
} fmt.Println("")
fmt.Println("")
items := make([]map[int]int, 5)
for i:= range items {
items[i] = make(map[int]int, 1)
items[i][1] = 2//key is 1, value is 2
}
fmt.Printf("Version A: Value of items: %v\n", items)
}

  

go_Map的更多相关文章

随机推荐

  1. 『转』Emsisoft Anti-Malware 8刷Key教程 - 文字版

    先分主机和客机,下载好 EAM8安装包 和 30天重置工具EAM Trial Reset 1.1.exe 1. 主机安装 Emsisoft Anti-Malware 8 并激活30天试用版   如果已 ...

  2. NodeJS反序列化漏洞利用

    原文来自:http://www.4hou.com/web/13024.html node.js是一个服务器端的运行环境,封装了Google V8引擎,V8引擎执行JavaScript速度非常快,性能非 ...

  3. 转:application/json 四种常见的 POST 提交数据方式

    四种常见的 POST 提交数据方式 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 PO ...

  4. react中父组件调用子组件的方法

    1.直接使用ref进行获取 import React, {Component} from 'react'; export default class Parent extends Component ...

  5. VirtualBox只能生成32位虚拟机

    /************************************************************************* * VirtualBox只能生成32位虚拟机 * ...

  6. WCF WS-Security and WSE Nonce Authentication【转】

    原文:http://weblog.west-wind.com/posts/2012/Nov/24/WCF-WSSecurity-and-WSE-Nonce-Authentication?utm_sou ...

  7. java代码块执行顺序

    父类 public class Father { public Father() { System.out.println("父类构造PUBLIC father"); } stat ...

  8. wpf 客户端【JDAgent桌面助手】开发详解(一)主窗口 圆形菜单

    目录区域: wpf 客户端[JDAgent桌面助手]业余开发的终于完工了..晒晒截图wpf 客户端[JDAgent桌面助手]开发详解-开篇 内容区域: 这里开始主窗口 圆形菜单制作的过程,首先请大家看 ...

  9. python一条语句分析几个常用函数和概念

    前言 过年也没完全闲着,每天用一点点时间学点东西,本文为大家介绍几个python操作的细节,包含all.any.for in等操作,以及介绍我解决问题的思路. 一.开篇 先从我看到的一个简单的语句开始 ...

  10. oracle undo表空间大小修改

    redhat:清空回收站 rm -rf  /home/登录用户名/.Trash 例子:rm -rf /home/.Trash-root df命令可以显示目前所有文件系统的可用空间及使用情形: 例子:d ...