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语言学习笔记 — 基础 — 基本数据类型 — 类型类别:值类型和引用类型

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:遍历字符串

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:修改字符串