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)) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现