一个字符串是一个不可改变的字节序列,字符串可以包含任意的数据,但是通常是用来包含可读的文本,
字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码表上的字符时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。
字符串是一种值类型,且值不可变,即创建某个文本后将无法再次修改这个文本的内容,更深入地讲,字符串是字节的定长数组。
package main
import "fmt"
/*
可以使用双引号""来定义字符串,字符串中可以使用转义字符来实现换行、缩进等效果,常用的转义字符包括:
\n:换行符
\r:回车符
\t:tab 键
\u 或 \U:Unicode 字符
\\:反斜杠自身
*/
func Str(str string) {
//ASCII 字符遍历
//字符串所占的字节长度可以通过函数 len() 来获取
for i:=0;i<len(str) ;i++ {
fmt.Printf("ascii: %c %d ", str[i],str[i])
}
//按Unicode(UTF-8)字符遍历字符串(正常显示中文)
for _,s:=range str {
fmt.Printf("Unicode:%c %d ",s,s)
}
}
func main() {
//字符串的内容(纯字节)可以通过标准索引法来获取,在方括号[]内写入索引,索引从 0 开始计数:
var str="RushA的"
fmt.Println(str) //RushA的
fmt.Println(str[0]) //字符串 str 的第 1 个字节:82
//获取字符串中某个字节的地址属于非法行为,例如 &str[i]
//fmt.Println(&str[1]) //cannot take the address of str[1]
Str(str)
/*
ascii: R 82 ascii: u 117 ascii: s 115 ascii: h 104 ascii: A 65 ascii: ç 231 ascii: 154 ascii: 132
Unicode:R 82 Unicode:u 117 Unicode:s 115 Unicode:h 104 Unicode:A 65 Unicode:的 30340
*/
Str1() //wdnmdcxk
}
//字符串拼接符“+”
//两个字符串 s1 和 s2 可以通过 s := s1 + s2 拼接在一起。将 s2 追加到 s1 尾部并生成一个新的字符串 s。
func Str1() {
s:="wd"+"nmd"
s+="cxk"
fmt.Println(s)
}
//定义多行字符串
//使用双引号书写字符串的方式是字符串常见表达方式之一,被称为字符串字面量(string literal),
// 这种双引号字面量不能跨行,如果想要在源码中嵌入一个多行字符串时,就必须使用`反引号
//` `中所有代码均不会被编译器识别,而只是作为字符串的一部分
const str =`
1
2
3
`