Go 字符串 电脑版发表于:2020/12/28 10:49  >#Go 字符串 [TOC] 字符串 ------------ 1. string 是数据类型,不是引用类型或指针类型 2. string 是只读的 byte slice,len 函数可以它所包含的 byte 数 3. string 的 byte 数组可以存放任何数据 tn>我们来看看下面的代码。 ```go package string_test import "testing" func TestString(t *testing.T) { var s string t.Log(s) // 初始化为默认零值"" s = "hello" t.Log(len(s)) // s[1] = '3' // string 是不可变的byte slice s = "\xE4\xB8\xA5" // 可以存储任何二进制数据 // s = "\xE4\xBA\xB5\xFF" t.Log(s) t.Log(len(s))//可以知道指定的长度是以byte的形式 } ```  Unicode UTF8 ------------ 1. Unicode 是一种字符集(code point) 2. UTF8 是 unicode 的存储实现(转换为字节序列的规则) 3. 举个栗子 | 字符 | "中" | | ------------ | ------------ | | Unicode | 0x4E2D | | UTF-8 | 0xE4B8AD | | string/[]byte | [0xE4,0xB8,0xAD] | tn>我们从上一个方法中添加几行代码 ```go c := []rune(s) t.Log(len(c)) t.Logf("中 unicode %x", c[0]) t.Logf("中 UTF8 %x", s) ```  常用字符串函数包 ------------ 1. string 包 (https://golang.org/pkg/string) 1. strconv 包 (https://golang.org/pkg/strconv) 遍历字符串 ------------ ```go func TestStringToRune(t *testing.T) { s := "学得好慢呀" for _, c := range s { t.Logf("%[1]c %[1]x", c) } } ```  其他函数与方法 ------------ tn>分割与拼接 ```go func TestStringFn(t *testing.T) { s := "A,B,C" // 分割 parts := strings.Split(s, ",") for _, part := range parts { t.Log(part) } // 拼接 t.Log(strings.Join(parts, "-")) } ```  tn>转类型 ```go func TestCov(t *testing.T) { // 整型转字符串 s := strconv.Itoa(10) t.Log("str" + s) // 字符串转整型(先判断是否能转成功) if i, err := strconv.Atoi("10"); err == nil { t.Log(10 + i) } } ``` 