文档章节

Go1.9 安全map用法

ChamPly
 ChamPly
发布于 2017/08/31 13:05
字数 329
阅读 31
收藏 0

Go1.9 安全map使用

sync.map就是1.9版本带的线程安全map,主要有:

  • Store
  • LoadOrStore
  • Load
  • Delete
  • Range

这几种用法


Store(key, value interface{})

说明: 存储一个设置的键值

LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)

说明: 返回键的现有值(如果存在),否则存储并返回给定的值,如果是读取则返回true,如果是存储返回false

Load(key interface{}) (value interface{}, ok bool)

说明: 读取存储在map中的值,如果没有值,则返回nil。OK的结果表示是否在map中找到值

Delete(key interface{})

说明: 删除键对应的值

Range(f func(key, value interface{}) bool)

说明: 循环读取map中的值

代码如下:

package main

import (
    "fmt"
    "sync"
)

type userInfo struct {
    Name string
    Age  int
}

var m sync.Map

func main() {

    vv, ok := m.LoadOrStore("1", "one")
    fmt.Println(vv, ok) //one false

    vv, ok = m.Load("1")
    fmt.Println(vv, ok) //one true

    vv, ok = m.LoadOrStore("1", "oneone")
    fmt.Println(vv, ok) //one true

    vv, ok = m.Load("1")
    fmt.Println(vv, ok) //one true

    m.Store("1", "oneone")
    vv, ok = m.Load("1")
    fmt.Println(vv, ok) // oneone true

    m.Store("2", "two")
    m.Range(func(k, v interface{}) bool {
        fmt.Println(k, v)
        return true
    })

    m.Delete("1")
    m.Range(func(k, v interface{}) bool {
        fmt.Println(k, v)
        return true
    })

    map1 := make(map[string]userInfo)
    var user1 userInfo
    user1.Name = "ChamPly"
    user1.Age = 24
    map1["user1"] = user1

    var user2 userInfo
    user2.Name = "Tom"
    user2.Age = 18
    m.Store("map_test", map1)

    mapValue, _ := m.Load("map_test")

    for k, v := range mapValue.(interface{}).(map[string]userInfo) {
        fmt.Println(k, v)
        fmt.Println("name:", v.Name)
    }
}

执行结果:
这里写图片描述

by : champly

2017年8月27日

© 著作权归作者所有

共有 人打赏支持
ChamPly

ChamPly

粉丝 11
博文 42
码字总数 32506
作品 0
朝阳
程序员
go执行文件报错:cannot execute binary file?

go bulid 出来的文件,执行出错,提示 “-bash: .: a: cannot execute binary file” 附: 当前系统:Linux iZ2zec4vask3fxzvkdbpjuZ 2.6.32-696.3.2.el6.x8664 #1 SMP Tue Jun 20 01:26:55......

雨明yzs
2017/08/30
58
1
Go圣经-学习笔记之封装还是组合

上一篇 Go圣经-学习笔记之方法 下一篇 Go圣经-学习笔记之方法值和表达式 通过结构体嵌入扩展类型 在前面文章中,已经介绍了结构体中的匿名成员。今天我们介绍下对象的行为集扩展。 上面的p对...

cdh0805010
2017/10/26
0
0
Go圣经-学习笔记之复合类型(二)

上一篇 Go圣经-学习笔记之复合类型 下一篇 Go圣经-学习笔记之复合数据结构(三) map介绍和简单使用 map是一种无序的key/value对的集合,在Go语言中,一个map就是一个hash表的引用。map中的key...

cdh0805010
2017/10/23
0
0
(1)集合 ---遍历map集合

Map接口 实现Map接口的类用来存储键(key)-值(value) 对。 Map 接口的实现类有HashMap和TreeMap等。 Map类中存储的键-值对通过键来标识,所以键值不能重复。 HashMap: 线程不安全,效率高....

无信不立
2014/07/09
0
0
List,Set,Map用法以及区别

List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是。 如图: Collection   ├List   │├LinkedList   │├ArrayList   │└Vector   │ └Stack   └Set   ...

varchard
2015/03/26
0
3

没有更多内容

加载失败,请刷新页面

加载更多

安全管理标准

安全生产严重等级分类: 故障频次: 风险等级矩阵:

乔老哥
12分钟前
1
0
数据结构“树”的相关微视频

今天在腾讯视频上闲逛,然後发现一个叫“岚人”的用户上传了几段小视频,基本上都在5分钟以内,讲解了关于树的一些结构和算法。零代码,非常适合初学者入门。不过,对于老鸟来说,这也是非常...

Iridium
24分钟前
0
0
10-利用思维导图梳理JavaSE-Java 集合

10-利用思维导图梳理JavaSE-Java 集合 主要内容 1.Collection接口 2.Set接口 2.1.Set接口概述 2.2.HashSet类 2.3.TreeSet类 2.4.SortedSet接口 3.List接口 3.1.List接口概述 3.2.ArrayList类...

飞鱼说编程
35分钟前
3
0
活动推荐|互联网3.0与区块链新时代论坛(北京)

1 时间地点 **时间:**9月22日 14:00 - 18:00 地点:(北京海淀)西大街70号 3w咖啡 二层 2 活动详情 Harmony创始人Stephen及团队将介绍他们的区块链分片扩容技术。Stephen曾任Apple地图服务...

HiBlock
53分钟前
1
0
如何优雅的删除Redis的大key

关于Redis大键(Key),我们从[空间复杂性]和访问它的[时间复杂度]两个方面来定义大键。前者主要表示Redis键的占用内存大小;后者表示Redis集合数据类型(set/hash/list/sorted set)键,所含有的...

IT--小哥
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部