Basics
When you convert between a string and a byte slice (array), you get a brand new slice that contains the same bytes as the string, and vice versa.
If you need to manipulate the characters (runes) of a string, you may want to convert the string to a rune slice instead. See Convert between rune array/slice and string.
Convert string to bytes
When you convert a string to a byte slice, you get a new slice that contains the same bytes as the string:
- b := []byte("ABC€")
- fmt.Println(b) // [65 66 67 226 130 172]
Convert bytes to string
When you convert a slice of bytes to a string, you get a new string that contains the same bytes as the slice:
- s := string([]byte{65, 66, 67, 226, 130, 172})
- fmt.Println(s) // ABC€
These conversions create a new slice or string, and therefore have time complexity proportional to the number of bytes that are processed.
More efficient alternative
In some cases, you might be able to use a string builder, which can concatenate strings without redundant copying:
Supplement
* The Go Blog - Strings, bytes, runes and characters in Go
* OpenHome Go - 常用 API - 文字: bytes 套件
* OpenHome Go - 常用 API - 文字: strconv、strings 套件
沒有留言:
張貼留言