clonerex

package
v1.98.3 Latest Latest
Warning

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

Go to latest
Published: May 21, 2026 License: BSD-3-Clause Imports: 1 Imported by: 0

Documentation

Overview

Package clonerex is an example package for the cloner tool.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Clone

func Clone(dst, src any) bool

Clone duplicates src into dst and reports whether it succeeded. To succeed, <src, dst> must be of types <*T, *T> or <*T, **T>, where T is one of SliceContainer,InterfaceContainer,MapWithPointers,DeeplyNestedMap,NamedMapContainer,MapSlicePointerContainer.

Types

type Cloneable added in v1.90.0

type Cloneable interface {
	Clone() Cloneable
}

Cloneable is an interface with a Clone method.

type CloneableImpl added in v1.90.0

type CloneableImpl struct {
	Value int
}

CloneableImpl is a concrete type that implements Cloneable.

func (*CloneableImpl) Clone added in v1.90.0

func (c *CloneableImpl) Clone() Cloneable

type DeeplyNestedMap added in v1.92.0

type DeeplyNestedMap struct {
	ThreeLevels map[string]map[string]map[string]int
	FourLevels  map[string]map[string]map[string]map[string]*SliceContainer
}

DeeplyNestedMap tests arbitrary depth of map nesting (3+ levels)

func (*DeeplyNestedMap) Clone added in v1.92.0

func (src *DeeplyNestedMap) Clone() *DeeplyNestedMap

Clone makes a deep copy of DeeplyNestedMap. The result aliases no memory with the original.

type InterfaceContainer added in v1.90.0

type InterfaceContainer struct {
	Interface Cloneable
}

InterfaceContainer has a pointer to an interface field, which tests the special handling for interface types in the cloner.

func (*InterfaceContainer) Clone added in v1.90.0

func (src *InterfaceContainer) Clone() *InterfaceContainer

Clone makes a deep copy of InterfaceContainer. The result aliases no memory with the original.

type MapSlicePointerContainer added in v1.98.0

type MapSlicePointerContainer struct {
	Routes map[string][]*SliceContainer
}

MapSlicePointerContainer has a map whose values are slices of pointers. This tests that the cloner deep-clones the pointer elements in the slice, not just the slice itself (which would leave aliased pointers).

func (*MapSlicePointerContainer) Clone added in v1.98.0

Clone makes a deep copy of MapSlicePointerContainer. The result aliases no memory with the original.

type MapWithPointers added in v1.92.0

type MapWithPointers struct {
	Nested          map[string]*int
	WithCloneMethod map[string]*SliceContainer
	CloneInterface  map[string]Cloneable
}

func (*MapWithPointers) Clone added in v1.92.0

func (src *MapWithPointers) Clone() *MapWithPointers

Clone makes a deep copy of MapWithPointers. The result aliases no memory with the original.

type NamedMap added in v1.98.0

type NamedMap map[string]any

NamedMap is a named map type with its own Clone method. This tests that the cloner uses the type's Clone method rather than trying to descend into the map's value type.

func (NamedMap) Clone added in v1.98.0

func (m NamedMap) Clone() NamedMap

type NamedMapContainer added in v1.98.0

type NamedMapContainer struct {
	Attrs NamedMap
}

NamedMapContainer has a field whose type is a named map with a Clone method.

func (*NamedMapContainer) Clone added in v1.98.0

func (src *NamedMapContainer) Clone() *NamedMapContainer

Clone makes a deep copy of NamedMapContainer. The result aliases no memory with the original.

type SliceContainer

type SliceContainer struct {
	Slice []*int
}

func (*SliceContainer) Clone

func (src *SliceContainer) Clone() *SliceContainer

Clone makes a deep copy of SliceContainer. The result aliases no memory with the original.

Jump to

Keyboard shortcuts

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