Kokizzu
Kokizzu

Reputation: 26848

Technical things about conversion from []byte and string in Golang

Is it true that converting from string to []byte allocates new memory? Also, does converting from []byte to string allocates new memory?

 s := "a very long string"
 b := []byte(s) // does this doubled the memory requirement?

 b := []byte{1,2,3,4,5, ...very long bytes..}
 s := string(b) // does this doubled the memory requirement?

Upvotes: 1

Views: 86

Answers (1)

seong
seong

Reputation: 1996

Yes in both cases.

String types are immutable. Therefore converting them to a mutable slice type will allocate a new slice. See also http://blog.golang.org/go-slices-usage-and-internals

The same with the inverse. Otherwise mutating the slice would change the string, which would contradict the spec.

Upvotes: 5

Related Questions