Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,37 @@
package main
import "fmt"
// a complex data structure
type cds struct {
i int // no special handling needed for deep copy
s string // no special handling
b []byte // copied easily with append function
m map[int]bool // deep copy requires looping
}
// a method
func (c cds) deepcopy() *cds {
// copy what you can in one line
r := &cds{c.i, c.s, append([]byte{}, c.b...), make(map[int]bool)}
// populate map with a loop
for k, v := range c.m {
r.m[k] = v
}
return r
}
// demo
func main() {
// create and populate a structure
c1 := &cds{1, "one", []byte("unit"), map[int]bool{1: true}}
fmt.Println(c1) // show it
c2 := c1.deepcopy() // copy it
fmt.Println(c2) // show copy
c1.i = 0 // change original
c1.s = "nil"
copy(c1.b, "zero")
c1.m[1] = false
fmt.Println(c1) // show changes
fmt.Println(c2) // show copy unaffected
}