golang 字符串切片是否包含某个元素_Golang细节拾遗

本文由Masamune分享,介绍了Golang中字符串切片的操作,包括高效统计Unicode字符数、字符串拼接、获取字符长度、注释规范、类型打印、浮点数除法、内存管理和切片操作等细节,还提到了无限递归、JSON序列化、内存占用计算、goroutine管理等高级话题。
摘要由CSDN通过智能技术生成

01fec75f3e700d3ce7f96ea68bd1c267.png

作者:Masamune

1、如果s是非ASCII编码的字符,建议使用以下函数来对字符进行定位:

strings.IndexRune(s string, r rune) int

2、高效统计unicode字符串内字符数:utf8.RuneCountInString(s)。

3、拼接字符串更好的办法是使用函数strings.Join(),甚至使用字节缓冲bytes.Buffer。

4、通过函数len()来获取到的是字符串的字节长度,如果要获取非ASCII编码字符串的字符数量需要len([]rune(str))。

5、几乎所有全局作用域的类型、常量、变量、函数和被导出的对象都应该有一个合理的注释。如果这种注释(称为文档注释)出现在函数前面,例如函数 Abcd,则要以 "Abcd..." 作为开头。

6、在fmt.Printf中使用%T打印某个类型的完整说明。

7、浮点数除以0.0会返回一个无穷尽的结果,使用+Inf表示,并不会报错。

8、string大致的内部实现为:

type string {
    
    *[]byte str
    int len
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值