美文网首页
Go - strings

Go - strings

作者: kyo1992 | 来源:发表于2021-05-17 19:00 被阅读0次

数据结构

type StringHeader struct {
    Data uintptr    // 指向字节数组的指针
    Len  int        // 数组的大小
}

与切片的数据结构相比,少了cap,是一个只读的切片

因为字符串作为只读的类型,我们并不会直接向字符串直接追加元素改变其本身的内存空间,所有在字符串上的写入操作都是通过拷贝实现的。

拼接和拷贝

运行时会调用 copy 将输入的多个字符串拷贝到目标字符串所在的内存空间。新的字符串是一片新的内存空间,与原来的字符串也没有任何关联,一旦需要拼接的字符串非常大,拷贝带来的性能损失是无法忽略的。

[]byte与string转换

go语言不支持直接修改string类型变量的内存空间,可以通过在string和[]byte类型之间反复转换实现这一目的。

  1. 先将这段内存拷贝到堆或者栈上;
  2. 将变量的类型转换成 []byte 后并修改字节数据;
  3. 将修改后的字节数组转换回 string;
func main() {
    s := "hello"
    b := []byte(s)
    b[0] = 'q'
    s = string(b)
    fmt.Println("qqq: ", s)
}

相关文章

  • Golfing常用包-strings.go

    strings.go

  • go语言strings库总结

    最近由于用go做字符串处理,用到了go的strings库,借此对go strings库做个总结,将go strin...

  • 2019-07-18 go strings包常用方法

    go strings包 常用方法预习

  • Go strings

    strings是Golang提供的专门用于字符串操作的标准库 字符串类型可视为特殊的切片类型,因此获取长度可直接使...

  • Go - strings

    数据结构 与切片的数据结构相比,少了cap,是一个只读的切片 因为字符串作为只读的类型,我们并不会直接向字符串直接...

  • 【go3】go字符串包含操作

    strings.Contains : strings全是小写,Contains首字母大写 Go 判断字符串中是否...

  • Go Strings 源码

    模板引擎对LaTeX支持不太好,可以查看静态页面:链接个人主页 Join Join 方法在字符串拼接的时候使用Bu...

  • go之strings

    strings strings包提供了一些常用的字符串操作,对于中文也是友好的 Index strings包的st...

  • go-day3

    go-day3 outline strings 和 strconv 使用 Go中的时间和日期类型 流程控制 函数详...

  • go中strings包

    字符串比较 func Compare(a, b string) int按两个字符串顺序比较两个字符ASCII码值大...

网友评论

      本文标题:Go - strings

      本文链接:https://www.haomeiwen.com/subject/stdcjltx.html