美文网首页
第5章 数据

第5章 数据

作者: c84f3109853b | 来源:发表于2017-05-08 20:12 被阅读0次

    5.1 字符串

    字符串是不可变字节(byte)序列,其本身是一个复合结构。

    type stingStruct struct {
    str unsafe.Pointer
    len int
    }

    头部指针指向字节数组,但没有NULL结尾。默认以UTF-8编码存储Unicode字符,字面量里允许使用十六进制、八进制和UTF编码格式。

    注意:

    • 内置函数len返回字符数组长度,cap不接受字符串类型参数。
    • 字符串默认值不是nil,而是""。
    • 编译器不会解析原始字符串中的注释语句,且前置缩进空格也属于字符串。
    • 允许以索引号访问字节数组(非字符),但不能获取元素地址。
    • 以切片语法返回子串时,其内部依旧指向原字节数组。
    • 要修改字符串,须将其转换为可变类型([]byte或[]rune),待完成后在转换回来。但不管如何转换,都须重新分配内存,并复制数据。

    使用for遍历字符串时,分byte和rune两种方式:

    • byte方式:for i := 0; i < len(s); i++ {}
    • rune方式:for i, c := range s {}

    字符串拼接方法性能排序:
    + < fmt.Sprintf <= strings.Join <= bytes.Buffer

    类型rune专门用来存储Unicode码点,它是int32的别名,相当于UCS-4/UTF-32编码格式。使用单引号的字面量,其默认类型就是rune。
    标准库unicode里提供了丰富的操作函数。除验证函数外,还可用RuneCountInString代替len函数返回准确的Unicode字符数量。

    相关文章

      网友评论

          本文标题:第5章 数据

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