Golang字符串简要归纳

  C语言没有原生的字符串类型,当需要表示字符串时,通常采用char*或char数组,字符串的末尾以'\0'结尾,编译器从头到尾扫描,遇到'\0'时,就认为字符串结束。

  在Golang当中,字符串是一个不可修改的UTF-8序列,字符串的末尾也有特定的标识符——即当前字符串的字节个数。

 

  简要对比如下:

  对于同一个字符串‘hello’:

  C语言:'hello\0'

  Golang:'hello5'

 

  Golang会将已赋值的字符串分配到只读内存段,因此是不可修改的;且相同的字符串会共享一份底层内存。

  

  那么应该如何修改一个字符串的,方法有以下两种:

  1.强制转换为字节切片 []byte。

  2.整体赋予新值,这样会整体指向另一段内存。

 

 

 

  

 

 

  有趣的demo:不运行,可以猜测一下以下代码打印的内容是什么?

  

1
2
3
4
5
6
7
8
9
func main() {
    s := "你好啊"
    s = "您" + s[1:]
    fmt.Println(s)
 
    s2 := []rune("你好啊")
    s2[0] = '您'
    fmt.Println(string(s2))
}

  

  

posted @   J0nathan1ei  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示