欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[日常] Go语言圣经-字节切片与字符串

程序员文章站 2022-06-23 23:16:52
1.一个字符串是一个不可改变的字节序列2.文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序列3.内置的len函数可以返回一个字符串中的字节数目4.第i个字节并不一定是字符串的第i个字符,因为对于非ASCII字符的UTF8编码会要两个或多个字节5.字符串操作基于原始字符串字节6 ......

1.一个字符串是一个不可改变的字节序列
2.文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序列
3.内置的len函数可以返回一个字符串中的字节数目
4.第i个字节并不一定是字符串的第i个字符,因为对于非ASCII字符的UTF8编码会要两个或多个字节
5.字符串操作基于原始字符串字节
6.字符串面值方式编写,只要将一系列字节序列包含在双引号内即可,解释字符串,其中的相关的转义字符将被替换;反引号括起来,支持换行,非解释字符串
7.每个符号都分配一个唯一的Unicode码点,Unicode码点对应Go语言中的rune整数类型
8.UTF8是一个将Unicode码点编码为字节序列的变长编码
9.变长的编码无法直接通过索引来访问第n个字符
10.将字符串看作是字节(byte)的切片(slice)来实现对其标准索引法的操作

 

        b:="你好"
        fmt.Println(len(b))//输出6,返回的是字节数目
        fmt.Println(string(b[0:3]))//输出 你,子字符串操作基于原始字符串字节
        //b[0]='a' //字符串的不可变性,这里会报错

        c:="hello"
        fmt.Println(len(c))//输出5,acsii码的是一个字节一个字符
        fmt.Println(string(c[2]))//输出 l,可以使用标准索引法获取

        d:=[]byte("hello")
        d[0]=byte('w')
        fmt.Println(string(d))//输出 wello,将字符串看作是字节(byte)的切片(slice)来实现对其标准索引法的操作