前言
下面将会介绍一个我们日常的开发中最长使用的数据类型——字符串。在go
中,字符串类型名字为string
,它和Java
中的String
类似,也是一个值不可变类型,内部是一个 UTF-8
字节数组。下面会通过一些例子展示go
中string
的特性
特性
go
中的string
具有以下特性:
- 默认值为空字符串 “”
- 内部是一个
UTF-8
字节数组,可以使用索引访问某字节 - 初始化后的值不可变(这里的不可变类似
Java
中的String
,如果需要修改值,就会重新分配一个新的数组)
默认值
验证string
默认值为空字符串的例子很简单,这一点和Java
中的String
(默认值为null
)不同。
package main
import "fmt"
func main() {
var str string // 以默认值初始化
fmt.Println("str default:",str) // 输出默认值
fmt.Println("str default length:",len(str)) //输出默认值长度
}
使用索引访问
由于string
底层是一个UTF-8
字节数组,所以可以使用索引访问string
中的元素。
package main
import "fmt"
func main() {
str := "test"
str0 :=str[0] // 底层byte数组第一个元素
fmt.Println("str0:",str0)
fmt.Println("string(str0):",string(str0)) // 将byte转成字符串
for i:=0;i<len(str);i++{ // 遍历每个元素,并转化为字符串输出
fmt.Println(i,":",string(str[i]))
}
}
值不可变
这里的值不可变指的是不能修改底层数组中的元素,只能通过重新分配一个新的数组来修改string
的值,例如下面的例子就无法通过编译。
str := "test"
str[0] = 'a'