go语言中string和slice的关系

2021-03-08  本文已影响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个数据已经被改成了汉字“一”。

上一篇 下一篇

猜你喜欢

热点阅读