From 9db4b3652fcb7ecce8e4aace16822816c225558f Mon Sep 17 00:00:00 2001 From: Stanly Date: Mon, 13 Sep 2021 19:20:45 +0800 Subject: [PATCH] Add Slice push, pop, unshift, shift, json --- types/slice.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 types/slice.go diff --git a/types/slice.go b/types/slice.go new file mode 100644 index 0000000..736ba73 --- /dev/null +++ b/types/slice.go @@ -0,0 +1,55 @@ +package types + +import ( + "encoding/json" +) + +type Slice []interface{} + +// Push 後堆 +func (slice *Slice) Push(value interface{}) { + *slice = append(*slice, value) +} + +// Pop 後取 +func (slice *Slice) Pop() (value interface{}) { + length := len(*slice) + if length > 0 { + value = (*slice)[length-1] + *slice = append((*slice)[:length-1]) + } + + return value +} + +// Unshift 前堆 +func (slice *Slice) Unshift(value interface{}) { + *slice = append(Slice{value}, *slice...) +} + +// Shift 前取 +func (slice *Slice) Shift() (value interface{}) { + length := len(*slice) + if length > 0 { + value = (*slice)[0] + *slice = (*slice)[1:length] + } + + return value +} + +// JSON 取得json +func (slice *Slice) JSON() ([]byte, error) { + bs, err := json.Marshal(slice) + if err != nil { + return nil, err + } + + return bs, nil +} + +// MustJSON 強制取得json +func (slice *Slice) MustJSON() []byte { + bs, _ := slice.JSON() + return bs +}