前言
本文你收货golang中字符串底层结构。了解字符串主要特点,并学习实战如何熟练使用string。
string 是什么
在 go 语言中,字符串实是一个不可改变的字节序列,其数据结构定义如下:
// 定义在 runtime/string.go 文件内
type stringStruct struct {
str unsafe.Pointer
len int
}
- str 是字符串指向底层字节数组的指针
- len 是字符串的字节长度
底层结构其实是一个结构体,所以字符串的赋值操作,也就是结构的复制过程,并不包含指针指向的内容的复制。下图是字符串hello存储结构示意图:
string 特点
- 字符串是一个不可改变的字节序列,不可修改
- 字符串支持切片操作,不同位置的切片底层访问的是同一块内存数据
- 由于只读的特性,相同字符串面值常量通常对应同一个字符串常量
如何使用string
字符串声明与输出
代码示例
package main
import "fmt"
func main() {
// 定义
s := "hello "
var a string // 空字符串
b := string("world")
fmt.Println(s)
fmt