下载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. Error: no such table: device;的问题的解决,去掉表名device后面的分号;

    sqlite> .mode csvsqlite> .import device.txt device;Error: no such table: device;sqlite> .im ...

  2. selenium 破解登录滑块验证码mu

    from selenium import webdriverfrom PIL import Imagefrom selenium.webdriver import ChromeOptionsfrom ...

  3. etcd3.0集群安装

    etcd 是一个分布式一致性键值存储,用于共享配置和服务发现,Go编写,并使用 Raft 一致性算法来管理高可用复制日志. 特性 简单:支持curl方式的用户API(http+json)安全:可选ss ...

  4. 浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程

    前言 最近开始了SpringBoot相关知识的学习,作为为目前比较流行.用的比较广的Spring框架,是每一个Java学习者及从业者都会接触到一个知识点.作为Spring框架项目,肯定少不了与数据库持 ...

  5. 我靠!Semaphore里面居然有这么一个大坑!

    这是why的第 59 篇原创文章 荒腔走板 大家好,我是why哥 ,欢迎来到我连续周更优质原创文章的第 59 篇. 上周写了一篇文章,一不小心戳到了大家的爽点,其中一个转载我文章的大号,阅读量居然突破 ...

  6. Flink的流处理API(二)

    一.Environment 1,getExecutionEnvironment getExecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的 ...

  7. 2017面向对象程序设计(Java)第十三周助教工作总结

    时间飞逝,本学期即将接近尾声.不知不觉同学们已经学习java十三个星期了,想必同学们对Java课程体系及内容有了更加深入的理解,也应该摸索出了一套适用于自己的学习方法. 下面我对上周工作做以简单总结: ...

  8. Android 菜单的使用

    有时间就随笔记录自己遇到的问题和所学的知识哈. 这是对本牛崽知识的提升也可以给其他牛牛们来点鸡汤和开胃菜. 菜单Menu的创建 首先menu是属于布局的嘛,所以嘞,咱们得在res(也就是布局资源)创建 ...

  9. 嵌入式linux下获取flash分区大小

    在嵌入式系统中,由于flash存储空间有限,或者是存储数据,实现数据的循环删除,需要获取到分区的使用情况,可以通过系统下的函数statfs来获取使用情况:实现代码如下: flashInfo.cpp # ...

  10. 打开IDEA后tomcat不能用,Cannot load project of unknown project type,无法加载类或者项目

    这一问题在网络中有比较统一的解决方法,我这个也是按这个方法解决的. 问题出现的前提和原因: 一个运行正常项目,我关闭后第二天打开发现tomcat不能用了. 解决方法: 我查了一下,这是一个IDEA软件 ...