Go1.18新增了Cut方法,在切割string字符串时非常好用。但是这里有个不应该用到Cut方法的反例。
我的系统把时间戳、作者、标签等Meta信息编入文件头,以[]byte类型存入数据库。取出内容时,依然是[]byte,需要转换为string后再展示。
有个需求是根据内容的标签判断当前登录的用户是否拥有读取权限,于是需要先把Meta部分提取出来做判断。
如果这里使用Cut方法,需要先[]byte转string,再切分,会进行内存拷贝。
使用IndexByte,则可直接从[]byte中找到相关部分范围,读取操作0拷贝。
这种细节部分的优化,可以很大程度提升系统效率。