orderedmap

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2026 License: MIT Imports: 5 Imported by: 0

README

orderedmap

GitHub tag (latest by date) Go Reference CI codecov Go Report Card

A generic, thread-safe ordered map for Go that preserves insertion order using container/list.

Installation

go get github.com/winebarrel/orderedmap

Requires Go 1.23+.

Usage

package main

import (
	"fmt"

	"github.com/winebarrel/orderedmap"
)

func main() {
	om := orderedmap.New[string, any]()

	om.Set("foo", "bar")
	om.Set("zoo", 100)
	om.Set("baz", true)

	fmt.Println(om)
	//=> *orderedmap.OrderedMap[string,interface {}][foo:bar zoo:100 baz:true]

	// Get a value
	fmt.Println(om.Get("foo"))
	//=> bar

	// Get a value with existence check
	v, ok := om.GetOk("foo")
	fmt.Println(v, ok)
	//=> bar true

	// Iterate over key-value pairs in insertion order
	for k, v := range om.All() {
		fmt.Println(k, v)
	}
	//=> foo bar
	//   zoo 100
	//   baz true

	// Iterate over keys
	for k := range om.Keys() {
		fmt.Println(k)
	}

	// Iterate over values
	for v := range om.Values() {
		fmt.Println(v)
	}

	// Push moves an existing key to the back
	om.Push("foo", "new_bar")
	for k, v := range om.All() {
		fmt.Println(k, v)
	}
	//=> zoo 100
	//   baz true
	//   foo new_bar

	// Delete a key
	om.Delete("zoo")

	// Get the number of entries
	fmt.Println(om.Len())
	//=> 2

	// Clear all entries
	om.Clear()
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type OrderedMap

type OrderedMap[K comparable, V any] struct {
	// contains filtered or unexported fields
}

func New

func New[K comparable, V any]() *OrderedMap[K, V]

func (*OrderedMap[K, V]) All

func (om *OrderedMap[K, V]) All() iter.Seq2[K, V]

func (*OrderedMap[K, V]) Clear

func (om *OrderedMap[K, V]) Clear()

func (*OrderedMap[K, V]) Delete

func (om *OrderedMap[K, V]) Delete(k K) V

func (*OrderedMap[K, V]) DeleteOk

func (om *OrderedMap[K, V]) DeleteOk(k K) (V, bool)

func (*OrderedMap[K, V]) Get

func (om *OrderedMap[K, V]) Get(k K) V

func (*OrderedMap[K, V]) GetOk

func (om *OrderedMap[K, V]) GetOk(k K) (V, bool)

func (*OrderedMap[K, V]) Keys

func (om *OrderedMap[K, V]) Keys() iter.Seq[K]

func (*OrderedMap[K, V]) Len

func (om *OrderedMap[K, V]) Len() int

func (*OrderedMap[K, V]) Pairs

func (om *OrderedMap[K, V]) Pairs() []Pair[K, V]

func (*OrderedMap[K, V]) Push

func (om *OrderedMap[K, V]) Push(k K, v V)

func (*OrderedMap[K, V]) Set

func (om *OrderedMap[K, V]) Set(k K, v V)

func (*OrderedMap[K, V]) String

func (om *OrderedMap[K, V]) String() string

func (*OrderedMap[K, V]) Values

func (om *OrderedMap[K, V]) Values() iter.Seq[V]

type Pair

type Pair[K comparable, V any] struct {
	Key   K
	Value V
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL