下载ctrie:

go get -t github.com/Workiva/go-datastructures/trie/ctrie

测试demo1:

package main

import (
"fmt"
"github.com/Workiva/go-datastructures/trie/ctrie"
"strconv"
) type dataStruct struct {
id int64
x int64
y int64
a string
b string
} func main() {
rect1 := &dataStruct{, , , "sss", "rrr"}
rect2 := &dataStruct{, , , "aaa", "xxx"}
rect3 := &dataStruct{, , , "bbb", "yyy"} ctrie := ctrie.New(nil)
key1 := []byte(strconv.Itoa(int(rect1.id)))
ctrie.Insert(key1, rect1) key2 := []byte(strconv.Itoa(int(rect2.id)))
ctrie.Insert(key2, rect2) key3 := []byte(strconv.Itoa(int(rect3.id)))
ctrie.Insert(key3, rect3) key := []byte(strconv.Itoa(int(rect3.id))) val, exists := ctrie.Lookup(key)
if exists {
data := val.(*dataStruct)
fmt.Println(data.a)
ctrie.Remove(key)
} val, exists = ctrie.Lookup(key)
if !exists {
fmt.Println("Not find")
} return
}

运行结果:

[root@wangjq ctrie]# go run main.go
bbb
Not find

测试demo2:

package main

import (
"fmt"
"github.com/Workiva/go-datastructures/trie/ctrie"
"bytes"
) type dataStruct struct {
id int64
x int64
y int64
a string
b string
} func main() {
rect := &dataStruct{, , , "sss", "rrr"} buf := &bytes.Buffer{}
buf.WriteString("")
key := buf.Bytes() ctrie := ctrie.New(nil)
ctrie.Insert(key, rect) buf_tmp := &bytes.Buffer{}
buf_tmp.WriteString("")
key_tmp := buf_tmp.Bytes() val, exists := ctrie.Lookup(key_tmp)
if exists {
data := val.(*dataStruct)
fmt.Println(data.a)
ctrie.Remove(key_tmp)
} val, exists = ctrie.Lookup(key_tmp)
if !exists {
fmt.Println("Not find")
} return
}

运行结果:

[root@ctrie]# go run demo.go
sss
Not find

golang ctrie demo的更多相关文章

  1. golang 并发demo 写入 redis

    原文链接:golang 并发demo 写入 redis 源代码: package main import ( "fmt" "runtime" "str ...

  2. win7环境下,golang thrift demo代码编译不通过

    用官方的教程代码:http://thrift.apache.org/tutorial/go 用网友提供的代码:Golang RPC 之 Thrift 都出现如下情况 状况1: 编辑器中就会提醒 Can ...

  3. golang grpc demo

    1.grpm 安装: git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc 2.proto, ...

  4. golang rpc demo

    RPC工作流程图 1.调用客户端句柄:执行传送参数 2.调用本地系统内核发送网络消息 3.消息传送到远程主机 4.服务器句柄得到消息并取得参数 5.执行远程过程 6.执行的过程将结果返回服务器句柄 7 ...

  5. golang mysql demo

    Go操作Mysql数据库 使用Go操作MySQL等数据库,一般有两种方式:一是使用database/sql接口,直接在代码里硬编码sql语句:二是使用gorm,即对象关系映射的方式在代码里抽象的操作数 ...

  6. Golang 对接宝付、通联、富友金账户...填坑记

    一.宝付私钥加密,公钥解密 由于对RSA加密解密原理不是很熟悉,宝付也没有Golang的Demo提供.Go语言库里一般都是私钥解密.公钥加密,或者私钥签名.公钥验签.宝付需要反过来,这里也到好找到了h ...

  7. Golang : flag 包简介

    在 Golang 程序中有很多种方法来处理命令行参数.简单的情况下可以不使用任何库,直接处理 os.Args:其实 Golang 的标准库提供了 flag 包来处理命令行参数:还有第三方提供的处理命令 ...

  8. 吾八哥学k8s(二):golang服务部署到kubernetes

    本篇主要讲解如何将golang的服务部署到kubernetes集群里,附带相关的golang的demo和yml文件内容.纯新手入门方式,生产服务需要完整的CI/CD流程来支持. golang服务代码 ...

  9. elixir grpc 试用

    备注:  elixir  grpc 封装测试   1.  安装 a. 安装 protoc 参考相关文档,比较简单 b. 安装elixir grpc 插件 protoc-gen-elixir 同时配置环 ...

随机推荐

  1. 下载spring的路径的文章,已经试用没问题

    文章:https://blog.csdn.net/ethan__xu/article/details/80273249 spring jar下载路径 http://repo.spring.io/rel ...

  2. Lun4R-CyBRICSCTF wp

    WEB Hunt (Web, Baby, 50 pts) 打断点,然后就一个一个被抓住了... 接着F12就出现了.(这个flag是白色的,藏在下面....)... RE Baby Rev 题目给了个 ...

  3. 使用AB对Nginx压测和并发预估

    简介 ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的. # 1.ab每次只能测试一个URL,适合做重复压力测试 # 2.参数很多,可以支持添加c ...

  4. Java 线程池记录

    Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixe ...

  5. Python File truncate() 方法

    概述 truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符.高佣联盟 www.cgewang.com 如果没有指定 size,则从当前位置起截断:截 ...

  6. PHP is_link() 函数

    定义和用法 The is_link() 函数检查指定的文件是否是一个连接. 如果文件是一个连接,该函数返回 TRUE. 语法 is_link(file) 参数 描述 file 必需.规定要检查的文件. ...

  7. PHP strcasecmp() 函数

    实例 比较两个字符串(不区分大小写): <?php高佣联盟 www.cgewang.comecho strcasecmp("Hello world!","HELLO ...

  8. 牛客挑战赛39 D 牛牛的数学题 NTT FMT FWT

    LINK:牛牛的数学题 题目看起来很不可做的样子. 但是 不难分析一下i,j之间的关系. 对于x=i|j且i&j==0, i,j一定是x的子集 我们可以暴力枚举子集来处理x这个数组. 考虑 x ...

  9. luogu P6091 原根

    LINK:原根 再复习一下原根 防止考场上要NTT求原根的时候不会求... 这道题要求求出n之内的所有原根 根据原根的定义. 原根指 若x对于模n的阶为phi(n)且\(1\leq x\leq n\) ...

  10. Pintech品致全新多功能MDO 704E系列示波器全新推出

    2020年 7月,Pintech品致全新推出推出首款具有多个模拟通道和多个数字通道的示波器.每个模拟通道带宽为200 MHz,每个模拟通道采样率同时达1 GSa/s,在一台仪器中,实现精确.可重复的. ...