Go语言中文网 为您找到相关结果 216

golang中的映射

1. Map 概念:map是一种特殊的数据结构,一种键值对的无序集合。相当于python中的字典 2. 创建和初始化map 使用make声明map dict := make(map[string]int) 使用map字面量的方式声明map dict := map[string]string {"key1": "value1", "key2": "value2"} dict := map[int][]string{} 声明了一个存储字符串切片的map 从map中删除一项 delete(dict, "key1") 删除键为key1的键值对 map在函数间传递是并不会制造该map的一个副本。实际上,当传入一个map给函数时,并对这个map进行修改时,所有对这个map的引用都会察觉到这个修改。 No...阅读全文

博文 2019-04-03 15:34:42 孤风追影

以太坊数据结构MPT

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 MPT(Merkle Patricia Tries)是以太坊存储数据的核心数据结构,它是由Merkle Tree和Patricia Tree结合的一种树形结构,理解MPT有助于我们更好的理解以太坊的数据存储。在了解MPT数据结构之前,我们需要先来看看基本的Tree结构和Merkle Tree、Patricia Tree。 Trie字典树  Trie树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。 上图是一棵Trie树,表示了字符串集合{“a”, “to”, “tea”, “ted”, “ten”, “...阅读全文

博文 2019-09-24 13:32:48 链客

高效生成JSON串——json-gen

概述 游戏服务端的很多操作(包括玩家的和非玩家的)需要传给公司中台收集汇总,根据运营的需求分析数据。中台那边要求传过去的数据为 JSON 格式。一开始我们使用 golang 标准库中的encoding/json,发现性能不够理想(因为序列化使用了反射,涉及多次内存分配)。由于数据原始格式都是map[string]interface{},且需要自己一个字段一个字段构造,于是我想可以在构造过程中就计算出最终 JSON 串的长度,那么就只需要一次内存分配了。 使用 下载: $ go get github.com/darjun/json-gen 导入: import ( jsongen "github.com/darjun/json-gen" ) 使用起来还是比较方便的: m := jsongen....阅读全文

# golang 数据结构 2

golang 数据结构1 channel atomic sync.Mutex sync.WaitGroup sync.Pool sync.Map channel Go 教程系列笔记 Channel 通道 The way to go 协程间的通信2 基本用法 var ch chan int ch := make(chan int) ch := make(chan int, 2) // 带缓存 chan ch <- value // 给 channel 发送值 value := <- ch // 从 channel 接收值 // for range channel for value := range ch { } // 函数中使用 func run(ch chan int){} func ru...阅读全文

博文 2019-08-12 18:47:26 xfstart07

Golang学习笔记-map

map是一些键值对的集合,默认值为nil,使用内置函数make创建map: var map_variable map[key_data_type]value_data_type map_variable := make(map[key_data_type]value_data_type) func main() { var numberMap map[string] int numberMap=make(map[string]int) println(len(numberMap)) } map可以使用大括号来初始化: var numberMap =map[string] int{"one":1,"two":2,"three":3} 判断元素是否存在: func main() { var nu...阅读全文

博文 2019-09-27 23:32:44 aside section ._1OhGeD

golang-101-hacks(18)——map类型访问

Map是一种指向哈希表的引用类型,可以使用map构造一个“键值”类型的数据库,这在实际编程中非常高效。例如,下面的代码是统计切片中每个元素的总数: package main import ( "fmt" ) func main() { s := []int{1, 1, 2, 2, 3, 3, 3} m := make(map[int]int) for _, v := range s { m[v]++ } for key, value := range m { fmt.Printf("%d occurs %d times\n", key, value) } } 运行结果 3 occurs 3 times 1 occurs 2 times 2 occurs 2 times 此外,根据Go spe...阅读全文

博文 2019-06-09 11:02:40 羊羽share

golang学习笔记-map类型

在刚刚接触go语言的时候,就看到很多地方出现了map。就对这个map很困惑,那么这个map究竟是什么呢。让我们一起来看一看吧。 map (映射)是一个种数据结构,用于存储一些无序的键值对。映射使用了两个数据结构来存储数据。第一个数据结构是数组,内部存储的是用户选择桶的散列值。第二个数据结构是一个字节数组,用于存储键值对。映射是一个存储键值对的无序集合。 创建和初始化 go语言中可以使用make函数,也可以使用使用字面量的方法来创建映射(map)。如下所示 //通过make函数 创建一个映射,键类型是string ,值是int list := make(map[string]int) list["test"]= 1 fmt.Println(list["test"]) //创建一个映射,键值都是...阅读全文

博文 2019-09-03 17:02:45 旧梦发癫

Docker ps常用命令

查看 docker 容器,必然要用到 docker ps 命令。其基本格式为: docker ps [OPTIONS] 关键在于 OPTIONS(选项): image 1 常见用法 1. 最常见的用法 $ docker ps 显示当前正在运行的容器。 在 PORTS 一列,如果暴露的端口是连续的,还会被合并在一起,例如一个容器暴露了3个 TCP 端口:100,101,102,则会显示为 100-102/tcp。 2. 显示所有状态的容器 $ docker ps -a 容器的状态共有 7 种:created|restarting|running|removing|paused|exited|dead。 3. 显示最后被创建的 n 个容器 $ docker ps -n 3 注意,这里不限状态。 ...阅读全文

流程控制之分支循环

在编写 Go 程序的时候,我们不仅会用前面学到的数据结构来存储数据,还会用到 if、switch、for 来进行条件判断和流程控制,今天我们就来一起学习下它们。 if if 主要用于条件判断,语法为: if 条件 { # 业务代码 } 先看一个简单例子: package main import "fmt" func main() { age := 7 if age > 6 { fmt.Println("It's primary school") } } 我们可以在条件中使用 & 或 || 来进行组合判断: package main import "fmt" func main() { age := 7 if age > 6 && age <= 12 { fmt.Println("It's p...阅读全文

博文 2019-06-18 19:32:40 51reboot

提问帖,有没有朋友帮我看下。

//在数据查询数据键值对形式输出 ``` func Select() []map[string] string{ //初始化数据库并连接数据库 db_fb := InitDB() sqlstr := "select * from "+ query_p.name + " where "+query_p.where+";" rows, err := db_fb.Query(sqlstr) //如果有错误输出错误信息 checkErr(err) //构造scanArgs、values两个数组,scanArgs的每个值指向values相应值的地址 columns, _ := rows.Columns()//返回查询到的列名 scanArgs := make([...阅读全文

go map实现

golang map的实现源码在文件 runtime/map.go中,map的底层数据结构是hash表。hash函数:通过指定的函数,将输入值重新生成得到一个散列值hash表:散列值会确定其键应该映射到哪一个桶。而一个好的哈希函数,应当尽量少的出现哈希冲突,以此保证操作哈希表的时间复杂度 接下来从下面三个方面讲解: map数据结构 map查找实现 map插入实现 1. map的数据结构定义 type hmap struct { count int //map存储数据的个数,len(map)使用 flags uint8 //flags会标识当前map,比如hashWriting=4第4位表示有goroutine正在往map写入 B uint8 // map有 2^B 个buckets hash...阅读全文

博文 2019-10-18 18:32:48 bunnyhuangw

兄弟连Go语言培训教程复合类型3:映射

  Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,具有很高的生产效率,而且更加安全、支持并行进程。此外,不得不承认,简洁、快速、安全、并行、有趣、源,内存管理、数组安全、编译迅速等特色都使得Go语言更加吸引人,为缓解企业对Go语言人才需求,目前兄弟连教育已开设Go语言与区块链培训课程。 映射概述 映射(map)是键值对形成的集合 键值的类型都是任意的 可以根据键快速的查询值,而无须遍历 创建map 可以通过声明map[keytype]valuetype的方式创建map 也可以通过make(map[keytype]valuetype,size)的方式来创建,size不指定时默认长度为0 以map[key]和map[...阅读全文

告诉你 Redis 是一个牛逼货

概述: Key-Value存储系统 为什么要选择Key-Value Store 初识Redis Redis数据类型: Redis持久化: Redis主从同步: Redis性能: 适用场合: Redis作者的宣言 概述: Redis 是一个 Key-Value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、 list(链表)、 set(集合)和 zset(有序集合)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与 memcached 一样,为了...阅读全文

Redis常见的5种不同的数据类型详解

![](https://upload-images.jianshu.io/upload_images/16533261-ff78635e422a7add.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 一、前言 Redis除了可以存储键还可以存储常见的5种数据类型,分别是:String、List、Set、Hash、ZSet。对于Redis的命令有一部分是可以公用的,但是还有一些其他的命令是属于特殊使用的。 首先看看一张关于Redis5种数据结构的对比: ![](http://upload-images.jianshu.io/upload_images/16533261-3ba929f2b8a656...阅读全文