圆月山庄资源网 Design By www.vgjia.com
一、字符串底层就是一个字节数组
这真的非常重要,而且影响着下面的其他几个技巧。当你创建一个字符串时,其本质就是一个字节的数组。这意味着你可以像访问数组一样的访问单独的某个字节。例如,下面的代码逐个打印字符串中的每个字节以及对应字节数组中的每个字节:
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语言很有帮助,如果有有疑问大家可以留言交流。
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
更新日志
2024年05月15日
2024年05月15日
- dnf龙袍套装属性与天空套对比
- 横山菁儿-三国志-燃烧的长江-1993-APE整轨
- [ABC唱片]-《李传韵-琴魂》[K2-018][K2CD]WAV+CUE
- 【ABC唱片】《黃河號子SACD-011》-WAV分轨
- 当《生化危机2:重制版》加入路径追踪:画面真实感显著提升!
- 《哈迪斯2》BOSS不让暂停惹恼玩家:我手柄没电了!
- 《美末》S2艾莉造型首曝:头发留长 成熟了不少
- 邰正宵.2024-重燃爱恋.贰Walk.On【福茂】【FLAC分轨】
- 叶凡.2007-相思【中唱】【WAV+CUE】
- 王永.1997-十二道金牌【鸿心工作室】【WAV+CUE】
- dnf110换装在哪刷
- dnf110新版buff换装在哪里做
- dnf110满级了去哪里刷史诗
- 群星2024《龙年精逊纯银CD[WAV+CUE]
- 刘月宁《扬琴独奏-木兰辞变奏曲》[FLAC+CUE]