Hello,

I was wondering if someone could help me understand what is going on in the 
following piece of code.

package main

import (
"fmt"
"reflect"
"unsafe"
)

func main() {
a := []byte("1234567")
printSliceDetails(a)
}

func printSliceDetails(a []byte) {
sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&a))
fmt.Printf("Backing array location: %v, data: %s, len: %d, cap: %d\n",
sliceHeader.Data, string(a), len(a), cap(a))

// fmt.Printf("Backing array location: %v, data: %s, len: %d, cap: %d\n",
// sliceHeader, string(a), len(a), cap(a))
}


In the above code, the capacity prints 32. However, if you comment the 
first print statement and remove the commenting on the second and run the 
program again the capacity will only be 8. What is happening with 
sliceHeader.Data to make its capacity grow like that?

Thanks,
Farley

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to