Generally yes. As strings are immutable, and []byte is not, if you convert from string -> []byte, you need a new copy which can be written without changing the original string (which may be referred to elsewhere).
If you convert from []byte -> string, then you need a new copy so that any later changes to the byte slice won't change the contents of the string. There are a few specialised situations (like conversion from []byte -> string inside a map index where these copies optimised away. But otherwise you are stuck with an allocation. The fastest way to convert between string and []byte is not to convert between string and []byte, (i.e. just use []byte everywhere). On Friday, 29 January 2021 at 12:55:07 UTC cuiw...@gmail.com wrote: > I mean convert using > s := "abcefg" > b := []byte(s) > s2 := string(b) > > not convert using some unsafe.Pointer trick. > > On Friday, January 29, 2021 at 8:51:57 PM UTC+8 xie cui wrote: > >> does convert string to []byte, and convert []byte to string alway alloc >> new space, and the new space is in heap? >> if it is not, please show some demo codes? >> > -- 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/910b30e3-367d-4fe8-9932-172c13069effn%40googlegroups.com.