一、字符串底层就是一个字节数组
这真的非常重要,而且影响着下面的其他几个技巧。当你创建一个字符串时,其本质就是一个字节的数组。这意味着你可以像访问数组一样的访问单独的某个字节。例如,下面的代码逐个打印字符串中的每个字节以及对应字节数组中的每个字节:
package main import "fmt" func main() { str := "hello" for i := 0; i < len(str); i++ { fmt.Printf("%b %s\n", str[i], string(str[i])) } }
这是一个很重要的知识,因此才有了第二个技巧。。。
二、使用字节数组或缓冲区可以提升字符串连接的速度
在 Go 语言中字符串是只读的,这表示每次当你使用 str = str + "something"
时,实际上创建了一个新的字符串对象。如果你寻求代码的最高效率,这里应该使用字节缓冲区来替代,例如:
package main import ( "bytes" "fmt" ) func main() { str := "something" buf := bytes.NewBufferString(str) for i := 0; i < 1000; i++ { buf.Write([]byte(randomString())) } fmt.Println(buf.String()) } func randomString() string { ret := "pretend-this-is-random" return ret }
如果使用字节数组会进一步提升上述代码的效率,但你需要知道最终字符串的大小。一个直观的例子就是 Go 语言中的 left-pad
实现。
三、你可以像拼接其他数组一样拼接字符串
当你需要截取字符串中的一部分时,可以使用像截取数组某部分那样来操作,示例代码:
package main import "fmt" func main() { str := "XBodyContentX" content := str[1 : len(str)-1] fmt.Println(content) }
四、使用 ` 符号来创建多行字符串
这个相当简单,你希望在代码中定义一个包含多行地址信息的字符串,那么你需要用到 ` 这个字符,如下所示:
package main import "fmt" func main() { str := `Mr. Smith 123 Something St Some City, CA 94043` fmt.Println(str) }
五、你可以在字符串中嵌入 Unicode 字符
假设实现 WebSocket 通讯时,你需要让传输的数据以 0x00 开始,以 0xFF 结束[源码]
我们可以在任意字符串中通过如下代码实现:
package main import "fmt" func main() { str := "\x00BodyContent\xff" fmt.Println(str) }
同样的,你可以使用 Unicode 字符串来处理,或者也可以在字符串中使用原始字符。例如,下面的代码都是有效的:
package main import "fmt" func main() { a := "ÿay!" b := "\u00FFay!" fmt.Println(a, b) }
总结
关于Go语言使用字符串的技巧就分享到这了,大家都学会了吗?学会了这些相信会对大家使用Go语言很有帮助,如果有有疑问大家可以留言交流。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 群星《影视剧 群星闪耀时 影视原声带》[320K/MP3][38.69MB]
- 姜育恒.1998-成名金曲(马来西亚瑞华金碟珍藏版)【瑞华】【WAV+CUE】
- 水木年华.2006-生命狂想曲特别版2CD【水木同创】【WAV+CUE】
- 卢庚戌.2000-未来的未来【喜洋洋】【WAV+CUE】
- 钟汉良.1997-亲热【艺能动音】【WAV+CUE】
- 满文军.2002-我需要你【新索音乐】【WAV+CUE】
- 毛阿敏.2000-毛阿敏·精选集【中唱】【WAV+CUE】
- 钟明秋《爱有天意HQ》头版限量[低速原抓WAV+CUE]
- 云飞《云在飞HQ》头版限量编号[低速原抓WAV+CUE]
- 戏班-就是这个调调【FLAC分轨】
- 黄品源《寂寞旋律》[WAV+CUE][367M]
- 群星《家传户晓~我们三十年的主题曲XRCD》[WAV分轨][532M]
- 谢军《那一夜+又一夜》2CD[WAV分轨][1.2G]
- 苏有朋.1992-我只要你爱我【飞碟】【WAV+CUE】
- 谢金燕.2010-爱你辣【乾坤唱片】【WAV+CUE】