golang:[]byte转string

客官°小女子只卖身不卖艺 2023-02-21 06:58 101阅读 0赞

golang中,字符切片[]byte转换成string最简单的方式是

  1. package main
  2. import (
  3. "fmt"
  4. _ "unsafe"
  5. )
  6. func main() {
  7. bytes := []byte("I am byte array !")
  8. str := string(bytes)
  9. bytes[0] = 'i'//注意这一行,bytes在这里修改了数据,但是str打印出来的依然没变化,
  10. fmt.Println(str)
  11. }

打印信息:I am byte array !

上面的代码bytes在这里修改了数据,但是str打印出来的依然没变化,是因为[]byte的内存被拷贝了。接着看下面的代码

  1. package main
  2. import (
  3. "fmt"
  4. "unsafe"
  5. )
  6. func main() {
  7. bytes := []byte("I am byte array !")
  8. str := (*string)(unsafe.Pointer(&bytes))
  9. bytes[0] = 'i'
  10. fmt.Println(*str)
  11. }

打印信息:i am byte array !

现在打印出来的信息已经是改变过的了,现在可以看出来str和bytes共用一片内存。

这样做的意义在于,在网络通信中,大多数的接受方式都是[]byte,如果[]byte的数据比较大,内存拷贝的话会影响系统的性能。

发表评论

表情:
评论列表 (有 0 条评论,101人围观)

还没有评论,来说两句吧...

相关阅读