GoFrame gtree树形结构的使用技巧示例

 更新时间:2022年06月09日 16:58:34   作者:王中阳Go  
这篇文章主要为大家介绍了GoFrame gtree树形结构的使用技巧示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

树形结构

树形结构gtree具有以下特点:

  • 支持排序,支持有序遍历
  • 内存占用低
  • 复杂度稳定
  • 适合大数据量存储

一图胜千言

查询源码

使用场景

  • 关联数组场景
  • 大数据量内存CRUD
  • 排序键值对(后面的示例就是前序遍历和后序遍历)

使用入门

我们以实例化红黑树为例(实例化B树、高度平衡树也是一样的方式)

常用方法

Set() 赋值

Keys() 获得键列表

Values() 获得值列表

Contains() 判断是否包含指定的key

t.Print() 可以直接打印树形结构

也可以通过常规方式打印树形结构:fmt.Println(t.String())

Iterator() 相关的方法进行树的遍历

Clear() 清空数

IsEmpty() 判断数是否为空

示例代码

package main
import (
   "fmt"
   "github.com/gogf/gf/container/gtree"
   "github.com/gogf/gf/util/gutil"
)
func main() {
   //实例化tree
   t := gtree.NewRedBlackTree(gutil.ComparatorInt)
   t.Set(-1, -1)
   for i := 0; i < 10; i++ {
      t.Set(i, i*10)
   }
   fmt.Println("键列表:", t.Keys())
   fmt.Println("值列表:", t.Values())
   // 查询是否包含
   fmt.Println(t.Contains(-1))
   fmt.Println("下面是使用t.Print()打印的树形结构:")
   t.Print() //打印出树形结构
   fmt.Println("下面是使用fmt.Println(t.String())打印的树形结构:")
   fmt.Println(t.String()) //和上面一样 也是打印出了树形结构
   t.IteratorDesc(func(key, value interface{}) bool {
      fmt.Println("倒序遍历:", key, value)
      return true
   })
   t.Clear()
   fmt.Println(t.IsEmpty()) //true
}

打印结果

技巧

最近几篇文章都提到了数据类型的排序,GoFrame提供的gutil提供了基本数据类型常用的比较方法。

(因为今天上午读了一篇阅读源码的文章,深受启发,所以自己也要多多读读源码了,看下大佬们是怎么写的代码的。)

以上就是GoFrame gtree树形结构的使用技巧示例的详细内容,更多关于GoFrame gtree树形结构的资料请关注脚本之家其它相关文章!

相关文章

  • Go语言应该什么情况使用指针

    Go语言应该什么情况使用指针

    go语言的指针类型和C/C++的指针类型用法是一样的,那么Go语言应该什么情况使用指针,本文就详细的介绍一下,感兴趣的可以了解一下
    2021-07-07
  • golang中单向channel的语法介绍

    golang中单向channel的语法介绍

    通过消息来共享数据是golang的一种设计哲学,channel则是这种哲理的体现。下面这篇文章主要给大家介绍了关于golang中单向channel语法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-07-07
  • golang读取yaml配置文件的方法实现

    golang读取yaml配置文件的方法实现

    本文主要介绍了golang读取yaml配置文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • Go语言sync包与锁实现限制线程对变量的访问

    Go语言sync包与锁实现限制线程对变量的访问

    本文主要介绍了Go语言sync包与锁实现限制线程对变量的访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • go内存缓存BigCache使用入门详解

    go内存缓存BigCache使用入门详解

    这篇文章主要为大家介绍了go内存缓存BigCache使用入门详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Go语言特点及基本数据类型使用详解

    Go语言特点及基本数据类型使用详解

    这篇文章主要为大家介绍了Go语言特点及基本数据类型使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 一文详解go的defer和return的执行顺序

    一文详解go的defer和return的执行顺序

    go的defer和return是golang中的两个关键字,return用于返回函数的返回值,也可以参与一定的流程控制,defer是golang中的延迟调用,经常用于文件流的关闭,锁的解锁操作,本文给大家介绍了go的defer和return的执行顺序,需要的朋友可以参考下
    2024-07-07
  • Go语言开发技巧必知的小细节提升效率

    Go语言开发技巧必知的小细节提升效率

    这篇文章主要介绍了Go语言开发技巧必知的小细节提升效率,分享几个你可能不知道的Go语言小细节,希望能帮助大家更好地学习这门语言
    2024-01-01
  • Go interface{} 转切片类型的实现方法

    Go interface{} 转切片类型的实现方法

    本文主要介绍了Go interface{} 转切片类型的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Go语言里的new函数用法分析

    Go语言里的new函数用法分析

    这篇文章主要介绍了Go语言里的new函数用法,实例分析了new函数的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02

最新评论