mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[release-branch.go1.9] expvar: make (*Map).Init clear existing keys
fixes #21619 Change-Id: I5bb513dfc8cac875b06a262eec40b5863ae23a4c Reviewed-on: https://go-review.googlesource.com/62370 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-on: https://go-review.googlesource.com/70973 Run-TryBot: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
ccd5abc105
commit
8c7fa95ad3
2 changed files with 33 additions and 1 deletions
|
|
@ -125,7 +125,17 @@ func (v *Map) String() string {
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Map) Init() *Map { return v }
|
// Init removes all keys from the map.
|
||||||
|
func (v *Map) Init() *Map {
|
||||||
|
v.keysMu.Lock()
|
||||||
|
defer v.keysMu.Unlock()
|
||||||
|
v.keys = v.keys[:0]
|
||||||
|
v.m.Range(func(k, _ interface{}) bool {
|
||||||
|
v.m.Delete(k)
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
// updateKeys updates the sorted list of keys in v.keys.
|
// updateKeys updates the sorted list of keys in v.keys.
|
||||||
func (v *Map) addKey(key string) {
|
func (v *Map) addKey(key string) {
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,28 @@ func BenchmarkStringSet(b *testing.B) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMapInit(t *testing.T) {
|
||||||
|
RemoveAll()
|
||||||
|
colors := NewMap("bike-shed-colors")
|
||||||
|
colors.Add("red", 1)
|
||||||
|
colors.Add("blue", 1)
|
||||||
|
colors.Add("chartreuse", 1)
|
||||||
|
|
||||||
|
n := 0
|
||||||
|
colors.Do(func(KeyValue) { n++ })
|
||||||
|
if n != 3 {
|
||||||
|
t.Errorf("after three Add calls with distinct keys, Do should invoke f 3 times; got %v", n)
|
||||||
|
}
|
||||||
|
|
||||||
|
colors.Init()
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
colors.Do(func(KeyValue) { n++ })
|
||||||
|
if n != 0 {
|
||||||
|
t.Errorf("after Init, Do should invoke f 0 times; got %v", n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestMapCounter(t *testing.T) {
|
func TestMapCounter(t *testing.T) {
|
||||||
RemoveAll()
|
RemoveAll()
|
||||||
colors := NewMap("bike-shed-colors")
|
colors := NewMap("bike-shed-colors")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue