字符串是 Go 中的字节切片。可以通过将一组字符括在双引号中来创建字符串" "。Go 中的字符串是兼容Unicode编码的,并且是UTF-8编码的。
访问字符串的单个字节或字符
由于字符串是字节切片,因此可以访问字符串的每个字节。
func printStr(s string) {
fmt.Printf("Bytes: ")
for i := 0; i < len(s); i++ {
fmt.Printf("%x ", s[i])
}
fmt.Printf("Characters: ")
for i := 0; i < len(s); i++ {
fmt.Printf("%c ", s[i])
}
}
func main() {
str := "初辰ge"
fmt.Printf("String: %s\n", str)
printStr(str)
}
该程序将输出为:
String: 初辰ge
Bytes: e5 88 9d e8 be b0 67 65 Characters: å
特殊符号乱码网页没能显示,以下是编辑器截图:
在 UTF-8 编码中,一个码点可能会占一个以上的字节。 在这种情况下,需要 rune
来解决。rune
是 Go 中的内置类型,它是 int32 的别名。Rune 表示 Go 中的 Unicode 代码点。代码点占用多少字节并不重要,它可以用一个符文来表示。
func printStr(s string) {
fmt.Printf("Bytes: ")
for i := 0; i < len(s); i++ {
fmt.Printf("%x ", s[i])
}
fmt.Printf("CharactersRune: ")
runes := []rune(s)
for i := 0; i < len(runes); i++ {
fmt.Printf("%c ", runes[i])
}
}
func main() {
str := "初辰ge"
fmt.Printf("String: %s\n", str)
printStr(str)
}
该程序将输出为:
String: 初辰ge
Bytes: e5 88 9d e8 be b0 67 65 CharactersRune: 初 辰 g e
字符串拼接
执行字符串连接的最简单方法是使用+运算符。
str1 := "初辰"
str2 := "ge"
fmt.Println(str1 + str2)
该程序将输出为:
初辰ge
使用 fmt 包的Sprintf函数。
str1 := "初辰"
str2 := "ge"
res := fmt.Sprintf("%s %s", str1, str2)
fmt.Println(res)
该程序将输出为:
初辰ge