github.com/safing/portbase@v0.19.5/container/doc.go (about) 1 // Package container gives you a []byte slice on steroids, allowing for quick data appending, prepending and fetching as well as transparent error transportation. 2 // 3 // A Container is basically a [][]byte slice that just appends new []byte slices and only copies things around when necessary. 4 // 5 // Byte slices added to the Container are not changed or appended, to not corrupt any other data that may be before and after the given slice. 6 // If interested, consider the following example to understand why this is important: 7 // 8 // package main 9 // 10 // import ( 11 // "fmt" 12 // ) 13 // 14 // func main() { 15 // a := []byte{0, 1,2,3,4,5,6,7,8,9} 16 // fmt.Printf("a: %+v\n", a) 17 // fmt.Printf("\nmaking changes...\n(we are not changing a directly)\n\n") 18 // b := a[2:6] 19 // c := append(b, 10, 11) 20 // fmt.Printf("b: %+v\n", b) 21 // fmt.Printf("c: %+v\n", c) 22 // fmt.Printf("a: %+v\n", a) 23 // } 24 // 25 // run it here: https://play.golang.org/p/xu1BXT3QYeE 26 package container