fmtsort

package
v0.139.2 Latest Latest
Warning

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

Go to latest
Published: Nov 23, 2024 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Package fmtsort provides a general stable ordering mechanism for maps, on behalf of the fmt and text/template packages. It is not guaranteed to be efficient and works only for types that are valid map keys.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type KeyValue added in v0.133.0

type KeyValue struct {
	Key, Value reflect.Value
}

KeyValue holds a single key and value pair found in a map.

type SortedMap

type SortedMap []KeyValue

SortedMap is a slice of KeyValue pairs that simplifies sorting and iterating over map entries.

Each KeyValue pair contains a map key and its corresponding value.

func Sort

func Sort(mapValue reflect.Value) SortedMap

Sort accepts a map and returns a SortedMap that has the same keys and values but in a stable sorted order according to the keys, modulo issues raised by unorderable key values such as NaNs.

The ordering rules are more general than with Go's < operator:

  • when applicable, nil compares low
  • ints, floats, and strings order by <
  • NaN compares less than non-NaN floats
  • bool compares false before true
  • complex compares real, then imag
  • pointers compare by machine address
  • channel values compare by machine address
  • structs compare each field in turn
  • arrays compare each element in turn. Otherwise identical arrays compare by length.
  • interface values compare first by reflect.Type describing the concrete type and then by concrete value as described in the previous rules.

Jump to

Keyboard shortcuts

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