go语言学习笔记 — 基础 — 基本数据类型 — 字符串:修改字符串
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 基础 — 基本数据类型 — 字符串:修改字符串相关的知识,希望对你有一定的参考价值。
我们无法直接修改go语言字符串的每一个字符元素,只能通过重新构造新的字符串,并赋值给原来的变量来实现。即:
-
go语言中的字符串和其他高级语言(Java、C#)一样,默认是不可变的(immutable)
-
修改字符串时,先把字符串转换为[]byte,再通过强制类型转换为string。
-
[]byte与string可以强制类型互转
angel := "Heros never die"
// 将字符串转为字符串切片
angleBytes := []byte(angel)
// 利用循环,把never单词替换为空格
for i := 5; i <= 10; i++ {
angleBytes[i] = ''
}
fmt.Println(string(angleBytes))
// Heros die
看起来,我们通过代码达成了修改字符串的目标,但真实情况是这样的:代码实际修改的是[]byte,[]byte在go语言中是可变的,其本质就是一个切片。在完成了对[]byte的操作后,使用string()将[]byte转为字符串,重新创造了一个新的字符串。
注:字符串不可变有很多好处:
- 天生线程安全
- 大家使用的字符串都是只读对象,无须加锁
- 方便内存共享,而不必使用写时复制(Copy On Write)等技术
- 字符串的hash值也只需要制作一份。
以上是关于go语言学习笔记 — 基础 — 基本数据类型 — 字符串:修改字符串的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 基础 — 基本数据类型 — 字符串:字符
go语言学习笔记 — 基础 — 基本数据类型 — 原生数据类型:布尔型数字类型(整型与浮点型)字符串类型
go语言学习笔记 — 基础 — 基本数据类型 — 字符串(11):go中的字符串
go语言学习笔记 — 基础 — 基本数据类型 — 类型类别:值类型和引用类型