美文网首页
go语言中string和slice的关系

go语言中string和slice的关系

作者: 梁帆 | 来源:发表于2021-03-08 00:17 被阅读0次

1、string底层是一个byte数组,因此string也可以进行切片处理。

示例如下:

切片处理string

2、string和slice在内存的形式,以"abcd"画出内存图:

string和slice的内存示意图

3、string是不可变的,也就是说不能通过str[0]='z'的方式来修改字符串。

4、如果需要修改字符串,可以先将string→[]byte或[]rune→修改→重写转成string.

示例如下:

修改字符串中的某个元素

注意,我们转成]byte后,可以处理英文或数字,但不能处理中文。原因是[]byte按字节来处理的,一个英文字母或者数字都只占1个字节,而一个汉字占3个字节。因此就会报错。例如我们把str的某个元素改成汉字“一”,就会报错如下:

报错信息

汉字字符“一”的编码是19968,已经超出了一个字节所能表示的范围了。解决方法是将string转成[]rune即可,因为[]rune是按字符处理,兼容汉字。

如下所示:

解决方法

输出如下:

输出结果

发现第5个数据已经被改成了汉字“一”。

相关文章

网友评论

      本文标题:go语言中string和slice的关系

      本文链接:https://www.haomeiwen.com/subject/qaluqltx.html