Go语言的字符串类型(string)

Go语言的字符串类型

string是Go语言的基本数据类型

string的数据结构:

1
2
3
4
5
6
// 源码来自Go 1.19
// 源码包:/usr/local/go/src/runtime/string.go
type stringStruct struct {
str unsafe.Pointer // 首地址
len int // 字符串长度
}
  • 1.string可以为空(长度为0),但不会是nil;
  • 2.string对象不可以修改

字符串类型常用类型转换

项目中经常需要在string和字节切片[]byte之间转换

1
2
3
4
5
6
// string to []byte
func stringToByte() {
s:= "Hello"
b:= []byte(s)
fmt.Pringln(b) // [72 101 108 108 111]
}
1
2
3
4
5
6
// []byte to string
func byteToString() {
b:= []byte('H', 'e', 'l', 'l', 'o')
s:= string(b)
fmt.Pringln(s) // Hello
}

常用字符串函数(标准库函数)

1
func Contains(s, substr string) bool   // 检查字符串s中是否包含子串substr
1
func Split(s, sep string) []string    // 将字符串s,根据分隔符sep拆分并生成子串的切片
1
func Join(elems []string, sep string) string // 将字符串切片elems中的元素,使用分隔符sep拼接成单个字符串
1
func HasPrefix(s, prefix string) bool // 检查字符串s中是否包含前缀prefix
1
func HasSuffix(s, suffix string) bool // 检查字符串s中是否包含后缀缀suffix
1
func ToUpper(s string) string // 将字符串s中的所有字符转换成大写
1
func ToLower(s string) string // 将字符串s中的所有字符转换成小写
1
func Trim(s string, cutset string) string  // 清除字符串s首部和尾部cutset中的字符
1
func TrimSpace(s string) string // 清除字符串s首部和尾部所有空白字符
1
func Replace(s, old, new string, n int) string // 字符串替换,将字符串s的前n个子串中的old替换成子串new
1
func ReplaceAll(s, old, new string) string // 将字符串s中的所有子串old替换成子串new
1
func EqualFold(s, t string) bool // 忽略大小写、比较两个子串是否相等