On Thursday, March 15, 2018 at 9:46:34 AM UTC-7, Ian Lance Taylor wrote: > > On Thu, Mar 15, 2018 at 1:34 AM, <lizhi...@gmail.com <javascript:>> > wrote: > > > > when evacuate oldbucket, go will migrate the data to a new position. > > > > and i found it used X and Y as two bucket where Xi equal the old index > in > > h.oldbuckets and Yi equal Xi plus newbit > > > > suppose the length of oldbuckets is 8 , and the hash of a key is 13 > (just a > > example), then it will be put in the 5. Now, the buckets grow to 16, it > > should be put in the 13. I think. >
Correct. > > > > but i found the code below. > > > > > https://github.com/golang/go/blob/6732fcc06df713fc737cee5c5860bad87599bc6d/src/runtime/hashmap.go#L1115 > > > > > > > > > > > > > useX will be true, if so, the 13 will be put in the 5 still, then i > can't > > understand it. Did i miss something ? > useX will be false because 13 & 8 == 0 is false. > > > > go 1.9 > > When a bucket is split into two new buckets, X and Y, each value has > to go to either X or Y. The decision is made by looking at the hash. > That is the code you are looking at. > > Ian > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.