Reference

emirpasic/gods:GoDS (Go Data Structures). Containers (Sets, Lists, Stacks, Maps, Trees), Sets (HashSet, TreeSet, LinkedHashSet), Lists (ArrayList, SinglyLinkedList, DoublyLinkedList), Stacks (LinkedListStack, ArrayStack), Maps (HashMap, TreeMap, HashBidiMap, TreeBidiMap, LinkedHashMap), Trees (RedBlackTree, AVLTree, BTree, BinaryHeap), Comparators, Iterators, …

Architecture

数据结构就是计算机中用来存储,汇总数据的方式,我们根据不同的目的,还有数据的不同特点,对数据进行存储,还有分析,以便与更高效的运用这些数据。
作为存储数据的结构我们将他称作 Container,并且规定它需要有下面这些方法,方便我们进行调用。

  1. type Container interface {
  2. Empty() bool
  3. Size() int
  4. Clear()
  5. Values() []interface{}
  6. }

我们对数据进行处理的时候,就免不了对数据进行比较,但是有些数据我们可能需要特殊的比较方法,所以,如果需要进行比较排序的话,我们应该自行传入比较函数,我们给这样的函数一个规范的形式:

  1. type Comparator func(a, b interface{}) int
  2. // a = b return 0
  3. // a > b return 1
  4. // a < b return -1

为了方便使用在 util 中也有常见数据类型的比较方法,比如 int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, byte, rune, time 还有 string(string 的比较是通过比较前面字符串的 ascii 码值)