Golang字符串简要归纳
C语言没有原生的字符串类型,当需要表示字符串时,通常采用char*或char数组,字符串的末尾以'\0'结尾,编译器从头到尾扫描,遇到'\0'时,就认为字符串结束。
在Golang当中,字符串是一个不可修改的UTF-8序列,字符串的末尾也有特定的标识符——即当前字符串的字节个数。
简要对比如下:
对于同一个字符串‘hello’:
C语言:'hello\0'
Golang:'hello5'
Golang会将已赋值的字符串分配到只读内存段,因此是不可修改的;且相同的字符串会共享一份底层内存。
那么应该如何修改一个字符串的,方法有以下两种:
1.强制转换为字节切片 []byte。
2.整体赋予新值,这样会整体指向另一段内存。
有趣的demo:不运行,可以猜测一下以下代码打印的内容是什么?
func main() {
s := "你好啊"
s = "您" + s[1:]
fmt.Println(s)
s2 := []rune("你好啊")
s2[0] = '您'
fmt.Println(string(s2))
}

浙公网安备 33010602011771号