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.