type HashTrieMap … // NewHashTrieMap creates a new HashTrieMap for the provided key and value. func NewHashTrieMap[K, V comparable]() *HashTrieMap[K, V] { … } type hashFunc … type equalFunc … // Load returns the value stored in the map for a key, or nil if no // value is present. // The ok result indicates whether value was found in the map. func (ht *HashTrieMap[K, V]) Load(key K) (value V, ok bool) { … } // LoadOrStore returns the existing value for the key if present. // Otherwise, it stores and returns the given value. // The loaded result is true if the value was loaded, false if stored. func (ht *HashTrieMap[K, V]) LoadOrStore(key K, value V) (result V, loaded bool) { … } // expand takes oldEntry and newEntry whose hashes conflict from bit 64 down to hashShift and // produces a subtree of indirect nodes to hold the two new entries. func (ht *HashTrieMap[K, V]) expand(oldEntry, newEntry *entry[K, V], newHash uintptr, hashShift uint, parent *indirect[K, V]) *node[K, V] { … } // CompareAndDelete deletes the entry for key if its value is equal to old. // // If there is no current value for key in the map, CompareAndDelete returns false // (even if the old value is the nil interface value). func (ht *HashTrieMap[K, V]) CompareAndDelete(key K, old V) (deleted bool) { … } // All returns an iter.Seq2 that produces all key-value pairs in the map. // The enumeration does not represent any consistent snapshot of the map, // but is guaranteed to visit each unique key-value pair only once. It is // safe to operate on the tree during iteration. No particular enumeration // order is guaranteed. func (ht *HashTrieMap[K, V]) All() func(yield func(K, V) bool) { … } func (ht *HashTrieMap[K, V]) iter(i *indirect[K, V], yield func(key K, value V) bool) bool { … } const nChildrenLog2 … const nChildren … const nChildrenMask … type indirect … func newIndirectNode[K, V comparable](parent *indirect[K, V]) *indirect[K, V] { … } func (i *indirect[K, V]) empty() bool { … } type entry … func newEntryNode[K, V comparable](key K, value V) *entry[K, V] { … } func (e *entry[K, V]) lookup(key K, equal equalFunc) (V, bool) { … } // compareAndDelete deletes an entry in the overflow chain if both the key and value compare // equal. Returns the new entry chain and whether or not anything was deleted. // // compareAndDelete must be called under the mutex of the indirect node which e is a child of. func (head *entry[K, V]) compareAndDelete(key K, value V, keyEqual, valEqual equalFunc) (*entry[K, V], bool) { … } type node … func (n *node[K, V]) entry() *entry[K, V] { … } func (n *node[K, V]) indirect() *indirect[K, V] { … }