...

Package intern

import "internal/intern"
Overview
Index

Overview ▾

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.

type Value

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

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

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.