字符串
- string是数据类型,不是引用或指针类型
- string只是只读的byte slice,len函数可以读出它所包含的byte数。注意中文比较特殊
- 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
- Unicode是一种字符集(code point)
- UTF8是Unicode的存储实现(转换为字节序列的规则)
编码与存储
| 字符 | "中" |
|---|---|
| Unicode | 0x4E2D |
| UTF-8 | 0xE4B8AD |
| 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)
}
}