package intern

import "internal/intern"

Package intern lets you make smaller comparable values by boxing a larger comparable value (such as a 16 byte string header) down into a globally unique 8 byte pointer.

The globally unique pointers are garbage collected with weak references and finalizers. This package hides that.

Index

Types

type Value

type Value struct {
	// contains filtered or unexported fields
}

A Value pointer is the handle to an underlying comparable value. See func Get for how Value pointers may be used.

func Get

func Get(cmpVal any) *Value

Get returns a pointer representing the comparable value cmpVal.

The returned pointer will be the same for Get(v) and Get(v2) if and only if v == v2, and can be used as a map key.

func GetByString

func GetByString(s string) *Value

GetByString is identical to Get, except that it is specialized for strings. This avoids an allocation from putting a string into an interface{} to pass as an argument to Get.

func (*Value) Get

func (v *Value) Get() any

Get returns the comparable value passed to the Get func that returned v.