I first asked this on https://reddit.com/r/golang but the contribution 
guide on github recommends this forum, so I'll post here before finally 
raising an issue on github if this appears to be a real bug.

ORIGINAL POST:

I came across this issue in some code I was reviewing today where a string 
is converted into a []byte and then a 32 byte slice is taken from that and 
returned. It returns a 32 byte slice even if the string is empty or less 
than 32 bytes in length as long as its not a string literal (comes from a 
function or stored in variable). I can index the slice normally and iterate 
over its elements, but attempting to print it with fmt.Printf causes a 
runtime error where it realizes the capacity is not actually 32. Trying to 
get a slice larger than 32 fails though smaller slices are okay. I think 
that has something to do with the storage needed to describe a slice 8 
bytes for memory location, 8 bytes for size, 8 bytes for capacity, 8 for 
padding as explained here: 
https://stackoverflow.com/questions/67839752/why-does-an-empty-slice-have-24-bytes

Here's a playground demo: https://play.golang.com/p/yiLPvRYq8PJ 

Maybe this is a known issue and or expected behavior so I thought I'd ask 
here before raising an issue on github.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/e9d7b4d4-357e-44f8-8712-cb0b9f64cba6n%40googlegroups.com.

Reply via email to