关注
func replaceSpace( s string ) string { var str strings.Builder for i := 0 ; i < len(s) ; i ++ { if s[i] != ' ' { str.WriteString(s[i:i+1]) //一个字符一个字符地拼接 } else { str.WriteString("%20") //遇到空格时拼接"%20" } } return str.String() } 字符串在 Go 语言中是不可变类型,占用内存大小是固定的,当使用 + 拼接 2 个字符串时,生成一个新的字符串,那么就需要开辟一段新的空间,新空间的大小是原来两个字符串的大小之和。拼接第三个字符串时,再开辟一段新空间,新空间大小是三个字符串大小之和,以此类推。假设一个字符串大小为 10 byte,拼接 1w 次,需要申请的内存大小为: 10 + 2 * 10 + 3 * 10 + ... + 10000 * 10 byte = 500 MB 而 strings.Builder,bytes.Buffer,包括切片 []byte 的内存是以倍数申请的。例如,初始大小为 0,当第一次写入大小为 10 byte 的字符串时,则会申请大小为 16 byte 的内存(恰好大于 10 byte 的 2 的指数),第二次写入 10 byte 时,内存不够,则申请 32 byte 的内存,第三次写入内存足够,则不申请新的,以此类推。
点赞
相关推荐
牛客热帖
更多
正在热议
更多
# 这个offer值得去吗? #
15189次浏览 158人参与
# 26届秋招投递记录 #
124364次浏览 686人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
46520次浏览 510人参与
# 如果春招能重来,我会___ #
16449次浏览 189人参与
# 你觉得实习能学到东西吗 #
153465次浏览 1486人参与
# 除了线上,还能去哪些地方投简历 #
9423次浏览 105人参与
# 大家每天通勤多久? #
119220次浏览 1652人参与
# 为了实习逃课值吗? #
81815次浏览 579人参与
# 想做Agent可以做哪些岗位? #
13828次浏览 429人参与
# 互联网公司评价 #
535636次浏览 4187人参与
# 面试官拷打AI项目都会问什么? #
13855次浏览 454人参与
# 九月了,是考研还是就业? #
109945次浏览 610人参与
# 金三银四,你的春招进行到哪个阶段了? #
36063次浏览 334人参与
# 你觉得最好用的AI编程工具是_ #
5114次浏览 98人参与
# 实习,不懂就问 #
214895次浏览 1710人参与
# 浅聊一下我实习的辛苦费 #
291457次浏览 1801人参与
# 一份好的简历长什么样? #
41540次浏览 503人参与
# 通信硬件薪资爆料 #
1318398次浏览 7290人参与
# 京东美团大战,你怎么看? #
186279次浏览 913人参与
# 实习第一天,你在干什么 #
10094次浏览 116人参与
# 实习要如何选择和准备? #
159779次浏览 1587人参与
查看16道真题和解析