09-字符串

80 阅读1分钟

字符串

  1. string是数据类型,不是引用或指针类型
  2. string只是只读的byte slice,len函数可以读出它所包含的byte数。注意中文比较特殊
  3. string的byte数组可以存放任何数据
func TestString(t *testing.T) {
    var s string
    s = "hello"
    t.Log(len(s))
    // s[1] = '3'         // string是不可变的byte slice
    s = "\xE4\xB8\xA5" // 可以存储任何二进制数据
    s = "\xE4\xBA\xBB\xFF"
    t.Log(s)
}

Unicode UTF8

  1. Unicode是一种字符集(code point)
  2. UTF8是Unicode的存储实现(转换为字节序列的规则)

编码与存储

字符"中"
Unicode0x4E2D
UTF-80xE4B8AD
string/[]byte[0xE4, 0xB8, 0xAD]

常用字符串函数

1.strings包

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, "-"))
}

2.strconv包

func TestConv(t *testing.T) {
    s := strconv.Itoa(10)
    t.Log("str" + s)
    if i, err := strconv.Atoi("10"); err == nil {
            t.Log(10 + i)
    }
}