func Contain(obj interface{}, target interface{}) (bool, error) { targetValue := reflect.ValueOf(target) switch reflect.TypeOf(target).Kind() { case reflect.Slice, reflect.Array: for i := 0; i < targetValue.Len(); i++ { if targetValue.Index(i).Interface() == obj { return tru...
//第一部分,前置检查 //参数为slice类型,原silce,目的扩容大小 func growslice(et *_type, old slice, cap int) slice { //竞态检查 if raceenabled { callerpc := getcallerpc() racereadrangepc(old.array, uintptr(old.len*int(et.size)), callerpc, funcPC(growslice)) } if msanenabled { ms...
//按键取值func (myMap *HashMap)GetValueForKey(keystring)string{//1.将key散列成0-BucketCount的整数作为Map的数组下标mapIndex :=HashCode(key)//2.获取对应数组头结点link :=myMap.Buckets[mapIndex]varvaluestring//遍历找到key对应的节点(因为有可能是哈希冲突了)head :=linkfor{ifhead.Data.Key ==ke...
Value: callHdr.Host}) t.hEnc.WriteField(hpack.HeaderField{Name: "content-type", Value: "application/grpc"}) t.hEnc.WriteField(hpack.HeaderField{Name: "user-agent", Value: t.userAgent}) t.hEnc.WriteField(hpack.HeaderField{Name: "te", Value: "trailers"})if callHdr.SendCompress...
funcnewEntry(pathstring)Entry {///如果路径包含分隔符 表示有多个文件ifstrings.Contains(path, pathListSeparator) {returnnewCompositeEntry(path) }//包含*,则说明要将相应目录下的所有class文件加载ifstrings.HasSuffix(path,"*") {returnnewWildcardEntry(path) }...
map存储键值对,支持key-value键值对的插入,查找/修改/删除key对应的value,并且这些操作都可以在O(1)时间复杂度完成。 package main import "fmt" func main() { //map声明初始化 score := make(map[string]int, 0) //key-value键值对存储 ...
if lenmem > 0 && writeBarrier.enabled { // Only shade the pointers in oldPtr since we know the destination slice p // only contains nil pointers because it has been cleared during alloc. bulkBarrierPreWriteSrcOnly(uintptr(p), uintptr(oldPtr), lenmem-et.size+et.ptrdata) ...
// Slice contains Type fields specific to slice types.type Slice struct { Elem *Type // element type} 1. 编译时:字面量初始化 当我们使用字面量 []int{1, 2, 3} 创建新的切片时,会创建一个array数组([3]int{1,2,3})存储于静态区中。同时会创建一个变量。
iflenmem >0&& writeBarrier.enabled { // Only shade the pointers in oldPtr since we know the destination slice p // only contains nil pointers because it has been cleared during alloc. bulkBarrierPreWriteSrcOnly(uintptr(p),uintptr(oldPtr), lenmem-et.size+et.ptrdata) ...
if copymem > 0 && writeBarrier.enabled { // Only shade the pointers in old.array since we know the destination slice to // only contains nil pointers because it has been cleared during alloc. // 只对old.array中的指针进行阴影处理,因为我们知道目标切片只包含零指针,因为它在分配过程中已被清...