在Go语言中,字符串(string)是UTF-8编码的不可变序列。当你将字符串转换为字节数组([]byte)时,实际上不会发生内存拷贝。Go语言的字符串和字节数组在底层使用相同的内存表示,只是编码方式不同。 当你将字符串转换为字节数组时,实际上只是将字符串的UTF-8编码表示转换为字节数组。这个转换过程不会创建新的内存副本,而是直接使用原始字符串的内存。你可以通过修改字节数组来修改原始字符串。 下面是一个示例代码,展示了将字符串转换为字节数组的操作: ```go package main import "fmt" func main() { str := "Hello, World!" bytes := []byte(str) fmt.Println(bytes) // 输出: [72 101 108 108 111 44 32 87 111 114 108 100 33] } ``` 在这个示例中,我们将字符串 "Hello, World!" 转换为字节数组,并打印了字节数组的内容。可以看到,字节数组准确地表示了字符串的UTF-8编码。 需要注意的是,虽然将字符串转换为字节数组不会发生内存拷贝,但如果你将字节数组转换为字符串时使用了不同的编码方式(例如使用`string()`函数),则可能会发生内存拷贝。在处理字符串和字节数组之间的转换时,要确保使用相同的编码方式以避免不必要的内存拷贝。 [2023-11-09 18:14:43 | AI写代码神器 | 329点数解答]