diff options
author | tyltr <tylitianrui@126.com> | 2021-10-08 23:45:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-08 17:45:45 +0200 |
commit | 7fdd5261e8cc744f04c0a90d7319688179cf78e9 (patch) | |
tree | 0eda616930260b4c6be446fac3f6794cd519759a /userdata.go | |
parent | feat:no need to store nil (#1116) (diff) | |
download | fasthttp-7fdd5261e8cc744f04c0a90d7319688179cf78e9.tar.gz fasthttp-7fdd5261e8cc744f04c0a90d7319688179cf78e9.tar.bz2 fasthttp-7fdd5261e8cc744f04c0a90d7319688179cf78e9.zip |
feat: a new userData API `Remove` (#1117)
* feat:userData new api "delete"
* ctx api `remove`
* rename
* modify
Diffstat (limited to 'userdata.go')
-rw-r--r-- | userdata.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/userdata.go b/userdata.go index 8d2eff9..9a7c988 100644 --- a/userdata.go +++ b/userdata.go @@ -21,6 +21,7 @@ func (d *userData) Set(key string, value interface{}) { return } } + if value == nil { return } @@ -72,3 +73,23 @@ func (d *userData) Reset() { } *d = (*d)[:0] } + +func (d *userData) Remove(key string) { + args := *d + n := len(args) + for i := 0; i < n; i++ { + kv := &args[i] + if string(kv.key) == key { + n-- + args[i] = args[n] + args[n].value = nil + args = args[:n] + *d = args + return + } + } +} + +func (d *userData) RemoveBytes(key []byte) { + d.Remove(b2s(key)) +} |