1.范围
2.介绍
3.加号拼接
4.下标切割
a[1:3]的返回值仍然是字符串
5.利用%c%v正确遍历字符串
因为UTF8编码下一个中文汉字由3~4个字节组成,所以我们不能简单的按照字节去遍历一个包含中文的字符串,否则就会出现下面输出中第一行的结果。
字符串底层是一个byte数组,所以可以和[]byte类型相互转换。字符串是不能修改的。字符串是由byte字节组成,所以字符串的长度是byte字节的长度。 rune类型用来表示utf8字符,一个rune字符由一个或多个byte组成。
func main() {
var b string = "eggo世界"
for _, r := range b {
fmt.Printf("%v\n", r)
fmt.Printf("%c\n", r)
}
}
/*101
e
103
g
103
g
111
o
19990
世
30028
界
*/
6.修改字符串
要修改字符串,需要先将其转换成[]rune或[]byte,完成后再转换为string。无论哪种转换,都会重新分配内存,并复制字节数组
7.整数不能转化为字符串
8.多行内容
9.string型切片输出无引号
10.字符串转义符
11.参数传递不会改变值
package main
import "fmt"
func main() {
name := "张三"
fmt.Println(modify(name))
fmt.Println(name)
}
func modify(s string) string {
s = s + s
return s
}
/*输出一下:
张三张三
张三
*/
/*基本类型举例子:以上是一个操作字符串的例子,通过打印的结果,可以看到,本来 name 的值并没有被改变,也就是说,我们传递的时一个副本,并且返回一个新创建的字符串。
*/
12.[]rune(str)
func main() {
str := "李陆豪"
fmt.Println(len(str)) //3
fmt.Println(str[0:1]) //�
fmt.Println(str[0:2]) //��
fmt.Println(str[0:3]) //李
runes := []rune(str)
fmt.Println(len(runes))
fmt.Println(runes[0:1]) //[26446]
fmt.Println(runes[0:2]) //[26446 38470]
fmt.Println(runes[0:3]) //[26446 38470 35946]
fmt.Println(string(runes[0])) //李
fmt.Println(string(runes[1])) //陆
fmt.Println(string(runes[2])) //豪
}