上QQ阅读APP看书,第一时间看更新
Persistent data structures for Go
Check out https://godoc.org/github.com/mndrix/ps
From it's documentation:
Fully persistent data structures. A persistent data structure is a data structure that always preserves the previous version of itself when it is modified. Such data structures are effectively immutable, as their operations do not update the structure in-place, but instead always yield a new structure.
Persistent data structures typically share structure among themselves. This allows operations to avoid copying the entire data structure.
ps has small but effective API for manipulating lists and maps of data:
type List interface {
Cons(val interface{}) List
ForEach(f func(interface{}))
Head() interface{}
IsNil() bool
Reverse() List
Size() int
Tail() List
}
func NewList() List
type Map interface {
Delete(key string) Map
ForEach(f func(key string, val interface{}))
IsNil() bool
Keys() []string
Lookup(key string) (interface{}, bool)
Set(key string, value interface{}) Map
Size() int
String() string
UnsafeMutableSet(key string, value interface{}) Map
}
func NewMap() Map
For more details see https://godoc.org/github.com/mndrix/ps