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

  

  

posted @ 2022-03-05 22:02  J0nathan1ei  阅读(102)  评论(0)    收藏  举报