12.go开源groupcache项目笔记——byteview代码
来源:互联网 发布:黑死馆杀人事件知乎 编辑:程序博客网 时间:2024/06/08 00:26
12.go开源groupcache项目笔记——byteview代码
定义结构体ByteView
type ByteView struct {
//If b is non-nil, b is used, else s is used.
b[]byte
sstring
}
b不为空使用b,b为空就使用s.
Len函数
返回一个整型数字。
如果b不会空,返回b的数组长度,不然就返回s的长度。
ByteSlice
如果b不会空,克隆b,如果为空,克隆s.
String
如果b不会空,返回b,否则返回s.
At
如果b不会空,返回b[i],否则返回s[i]
Slice
如果b不会空,从b中截取一段返回,否则从s返回。
SliceFrom
如果b不会空,从b中截取一段从入参指定开始到结束,否则从s返回从入参指定开始到结束。
Copy
如果b不会空,复制b到一个目标数组,如果为空则复制s,同时返回复制的字节数。
Equal
如果入参b2不会空,则判断v,b2.
EqualString
如果b为空,则返将入参s赋值为v.s.直接返回。
否则继续,先获得
获得v的长度。
如果s的长度和v的长度不一样,返回false
循环v.b判断是否是s[i]相等,有一个不相等则返回false.
EqualBytes
如果b不为空,判断v.b和入参b2是否相等。并返回。
否则,获得v长度,判断与b2长度是否一样。
接着判断b2和v.s[i]是否都一样。有一个不相等则返回FALSE。
Reader
如果b不为空,通过NewReader来读取v.b,返回为io.ReadSeeker
否则返回strings.NewReader(v.s)
ReadAt
可以读取带偏移[]byte,入参为byte和off(偏移),返回n(返回的值))和err(错误信息)
通过如下实现
n =v.SliceFrom(int(off)).Copy(p)
- 12.go开源groupcache项目笔记——byteview代码
- 14.go开源groupcache项目笔记——peers代码
- 15.go开源groupcache项目笔记——sinks代码
- 6.go开源groupcache项目笔记——consistenthash_test代码
- 8.go开源groupcache项目笔记——groupcachepb代码
- 9.go开源groupcache项目笔记——lru代码
- 11.go开源groupcache项目笔记——testpb代码
- 3.go开源groupcache项目——consistenthash代码
- 1.go开源groupcache项目——groupcache介绍
- 4.go开源groupcache项目笔记——关于strconv
- 5.go开源groupcache项目笔记——关于testing
- 10.go开源groupcache项目笔记——singleFlight
- 16.go开源groupcache项目笔记——部署
- 7.go开源groupcache项目笔记——关于gocode代码自动补齐
- 13.go开源groupcache项目笔记——byteview_test测试代码
- 2.go开源groupcache项目——关于protobuf
- 2.go开源cache2go项目笔记——项目介绍
- 1.go开源cache2go项目笔记——简单使用-
- 姓名,性别,年龄的输出
- HDU5762[Teacher Bo]--暴力枚举
- 11.go开源groupcache项目笔记——testpb代码
- 防止过拟合的处理方法
- you-get 下载暂停
- 12.go开源groupcache项目笔记——byteview代码
- Python Multi-Processing多线程编程
- spring 如何决定使用jdk动态代理和cglib(网易面试题)
- 笔记 -- 05 -- RecyclerView与ListView比较
- unity_NGUI系统学习(三)_Button组件
- 13.go开源groupcache项目笔记——byteview_test测试代码
- 数据结构 --- Java之队列的实现
- 挑战程序竞赛系列(83):3.6计算几何基础
- 16.go开源groupcache项目笔记——部署