optimized delAllArgs

This commit is contained in:
Aliaksandr Valialkin
2016-03-11 10:59:01 +02:00
parent e0eac18652
commit 3f6e5b64a9
+3 -12
View File
@@ -287,23 +287,14 @@ func copyArgs(dst, src []argsKV) []argsKV {
}
func delAllArgs(args []argsKV, key []byte) []argsKV {
for {
argsNew := delArg(args, key)
if len(argsNew) == len(args) {
return args
}
args = argsNew
}
}
func delArg(args []argsKV, key []byte) []argsKV {
for i, n := 0, len(args); i < n; i++ {
kv := &args[i]
if bytes.Equal(kv.key, key) {
tmp := *kv
copy(args[i:], args[i+1:])
args[n-1] = tmp
return args[:n-1]
n--
args[n] = tmp
args = args[:n]
}
}
return args