4.6 字符串
字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。UTF-8 是被广泛使用的编码格式,是文本文件的标准编码,其它包括 XML 和 JSON 在内,也都使用该编码。由于该编码对占用字节长度的不定性,Go 中的字符串也可能根据需要占用 1 至 4 个字节(示例见第 4.6 节),这与其它语言如 C++、Java 或者 Python 不同(Java 始终使用 2 个字节)。Go 这样做的好处是不仅减少了内存和硬盘空间占用,同时也不用像其它语言那样需要对使用 UTF-8 字符集的文本进行编码和解码。
字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容;更深入地讲,字符串是字节的定长数组。
Go 支持以下 2 种形式的字面值:
// test package main import ( "fmt" ) // "" 解释型字符串\n:换行符 \r:回车符 \t:tab 键 \u 或 \U:Unicode 字符 \\:反斜杠自身 var str string = "解释型字符串\n" //非解释型字符串将 \n直接打印出来 var str1 string = `非解释型字符串\n` func main() { fmt.Println(str) fmt.Println(str1) }
输出:
字符传的拼接
package main import ( "fmt" ) func main() { str := "Beginning of the string " + "second part of the string" /* 提示:在循环中使用加号 + 拼接字符串并不是最高效的做法,更好的办法是使用函数 strings.Join(), 有没有更好地办法了?有!使用字节缓冲(bytes.Buffer)拼接更加给力。 */ s := "hel" + "lo" s += "word!" fmt.Println(str) fmt.Println(s) //统计字符串个数 len(str) fmt.Println("str字符串的个数:", len(str)) /*小提示 fmt.Print(arg列表)格式化 arg 列表,非字符串元素之间添加空格 fmt.Println 格式化列表,所有元素之间添加空格,结尾添加换行符 fmt.Printf 使用格式字符串格式化 arg 列表。('格式字符串%s,%s,%s', arg1,arg2,arg3),就是把arg和%s的个数进行了一个绑定 */ //字符串支持索引,但是str[1]这样返回的是ASCII码。正常索引需要[x:y]开始结束 fmt.Println("str字符串的个数:", str[1]) //打印全部.这样也是打印全部[:] fmt.Printf("str字符串的个数:%s", str[0:len(str)]) }
输出: