golang ctrie demo
下载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的更多相关文章
- golang 并发demo 写入 redis
原文链接:golang 并发demo 写入 redis 源代码: package main import ( "fmt" "runtime" "str ...
- win7环境下,golang thrift demo代码编译不通过
用官方的教程代码:http://thrift.apache.org/tutorial/go 用网友提供的代码:Golang RPC 之 Thrift 都出现如下情况 状况1: 编辑器中就会提醒 Can ...
- golang grpc demo
1.grpm 安装: git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc 2.proto, ...
- golang rpc demo
RPC工作流程图 1.调用客户端句柄:执行传送参数 2.调用本地系统内核发送网络消息 3.消息传送到远程主机 4.服务器句柄得到消息并取得参数 5.执行远程过程 6.执行的过程将结果返回服务器句柄 7 ...
- golang mysql demo
Go操作Mysql数据库 使用Go操作MySQL等数据库,一般有两种方式:一是使用database/sql接口,直接在代码里硬编码sql语句:二是使用gorm,即对象关系映射的方式在代码里抽象的操作数 ...
- Golang 对接宝付、通联、富友金账户...填坑记
一.宝付私钥加密,公钥解密 由于对RSA加密解密原理不是很熟悉,宝付也没有Golang的Demo提供.Go语言库里一般都是私钥解密.公钥加密,或者私钥签名.公钥验签.宝付需要反过来,这里也到好找到了h ...
- Golang : flag 包简介
在 Golang 程序中有很多种方法来处理命令行参数.简单的情况下可以不使用任何库,直接处理 os.Args:其实 Golang 的标准库提供了 flag 包来处理命令行参数:还有第三方提供的处理命令 ...
- 吾八哥学k8s(二):golang服务部署到kubernetes
本篇主要讲解如何将golang的服务部署到kubernetes集群里,附带相关的golang的demo和yml文件内容.纯新手入门方式,生产服务需要完整的CI/CD流程来支持. golang服务代码 ...
- elixir grpc 试用
备注: elixir grpc 封装测试 1. 安装 a. 安装 protoc 参考相关文档,比较简单 b. 安装elixir grpc 插件 protoc-gen-elixir 同时配置环 ...
随机推荐
- Java8线程池ThreadPoolExecutor底层原理及其源码解析
小侃一下 日常开发中, 或许不会直接new线程或线程池, 但这些线程相关的基础或思想是非常重要的, 参考林迪效应; 就算没有直接用到, 可能间接也用到了类似的思想或原理, 例如tomcat, jett ...
- 02 . Beego框架结构组织,路由及项目初始化
Beego项目组织结构 conf conf:项目配置文件所在的目录,项目中有一些全局的配置都可以放在此目录下.默认的app.conf文件中默认指定了三个配置: // 1)appname = Beego ...
- C语言中的 “>>”与“<<”
1. ">>" int x = 16; printf("%d\n", x >> 1); 先将x转成二进制 10000, 不读最后一位, ...
- float对内联元素和块元素的影响
写在前面:附一篇w3s的关于css float的讲解:http://www.w3school.com.cn/css/css_positioning_floating.asp float属性还没有彻底了 ...
- Python pass语句
Python pass语句:空语句,主要用于保持程序结构的完整性 或者 函数想要添加某种功能,但是还没有想好具体应该怎么写. 在 for 循环中使用 pass: lst = [7,8,9,4] for ...
- PHP array_values() 函数
实例 返回数组中所有的值(不保留键名): <?php$a=array("Name"=>"Peter","Age"=>&qu ...
- PHP timezone_identifiers_list() 函数
------------恢复内容开始------------ 实例 输出非洲的所有时区: <?phpprint_r(timezone_identifiers_list(1));?> 运行实 ...
- CF R 639 div2 F Review 贪心 二分
LINK:Résumé Review 这道题让我眼前一亮没想到二分这么绝. 由于每个\(b_i\)都是局部的 全局只有一个限制\(\sum_{i=1}^nb_i=k\) 所以dp没有什么用 我们只需要 ...
- JavaScript动画实例:运动的字母特效
已知圆的坐标方程为: X=R*SIN(θ) Y=R*COS(θ) (0≤θ≤2π) 给定初始坐标位置(X,Y),按照圆的坐标方程,从角度angle = 0开始,每间隔angleSpeed = ...
- 解决 IntelliJ IDEA占用C盘过大空间问题
原文地址:https://blog.csdn.net/weixin_44449518/article/details/103334235 问题描述: 在保证其他软件缓存不影响C盘可用空间的基础上,当我 ...