diff --git a/collections/circlequeue.go b/collections/circlequeue.go index 1b18703..f3e19b2 100644 --- a/collections/circlequeue.go +++ b/collections/circlequeue.go @@ -3,7 +3,7 @@ package collections import "fmt" type CircleQueue struct { - data []interface{} + data []any cap int front int rear int @@ -13,12 +13,12 @@ func NewCircleQueue(cap int) *CircleQueue { cap++ return &CircleQueue{ - data: make([]interface{}, cap), + data: make([]any, cap), cap: cap, } } -func (q *CircleQueue) Push(data interface{}) bool { +func (q *CircleQueue) Push(data any) bool { if (q.rear+1)%q.cap == q.front { return false } @@ -27,7 +27,7 @@ func (q *CircleQueue) Push(data interface{}) bool { q.rear = (q.rear + 1) % q.cap return true } -func (q *CircleQueue) Pop() interface{} { +func (q *CircleQueue) Pop() any { if q.rear == q.front { return nil } diff --git a/collections/queue.go b/collections/queue.go index 4312c8b..6e0ee07 100644 --- a/collections/queue.go +++ b/collections/queue.go @@ -4,7 +4,7 @@ import "sync" // 数组队列,先进先出 type ArrayQueue struct { - array []interface{} // 底层切片 + array []any // 底层切片 size int // 队列的元素数量 lock sync.Mutex // 为了并发安全使用的锁 } @@ -14,7 +14,7 @@ func NewArrayQueue[T any]() *ArrayQueue { } // 入队 -func (queue *ArrayQueue) Add(v interface{}) { +func (queue *ArrayQueue) Add(v any) { queue.lock.Lock() defer queue.lock.Unlock() @@ -26,7 +26,7 @@ func (queue *ArrayQueue) Add(v interface{}) { } // 出队 -func (queue *ArrayQueue) Remove() interface{} { +func (queue *ArrayQueue) Remove() any { queue.lock.Lock() defer queue.lock.Unlock() @@ -48,7 +48,7 @@ func (queue *ArrayQueue) Remove() interface{} { */ // 创建新的数组,移动次数过多 - newArray := make([]interface{}, queue.size-1) + newArray := make([]any, queue.size-1) for i := 1; i < queue.size; i++ { // 从老数组的第一位开始进行数据移动 newArray[i-1] = queue.array[i] diff --git a/collections/stack.go b/collections/stack.go index 05de5aa..c9b6c85 100644 --- a/collections/stack.go +++ b/collections/stack.go @@ -3,9 +3,9 @@ package collections import "sync" type ArrayStack struct { - array []interface{} // 底层切片 - size int // 栈的元素数量 - lock sync.Mutex // 为了并发安全使用的锁 + array []any // 底层切片 + size int // 栈的元素数量 + lock sync.Mutex // 为了并发安全使用的锁 } func NewArrayStack[T any]() *ArrayStack { @@ -13,7 +13,7 @@ func NewArrayStack[T any]() *ArrayStack { } // 入栈 -func (stack *ArrayStack) Push(v interface{}) { +func (stack *ArrayStack) Push(v any) { stack.lock.Lock() defer stack.lock.Unlock() @@ -24,7 +24,7 @@ func (stack *ArrayStack) Push(v interface{}) { stack.size = stack.size + 1 } -func (stack *ArrayStack) Pop() interface{} { +func (stack *ArrayStack) Pop() any { stack.lock.Lock() defer stack.lock.Unlock() @@ -39,7 +39,7 @@ func (stack *ArrayStack) Pop() interface{} { //stack.array = stack.array[0 : stack.size-1] // 创建新的数组,空间占用不会越来越大,但可能移动元素次数过多 - newArray := make([]interface{}, stack.size-1, stack.size-1) + newArray := make([]any, stack.size-1, stack.size-1) for i := 0; i < stack.size-1; i++ { newArray[i] = stack.array[i] } @@ -51,7 +51,7 @@ func (stack *ArrayStack) Pop() interface{} { } // 获取栈顶元素 -func (stack *ArrayStack) Peek() interface{} { +func (stack *ArrayStack) Peek() any { // 栈中元素已空 if stack.size == 0 { panic("empty") diff --git a/json/jsonconv.go b/json/jsonconv.go index 72fb2bb..5bbaee4 100644 --- a/json/jsonconv.go +++ b/json/jsonconv.go @@ -13,7 +13,7 @@ import ( // 下划线 type SnakeCase struct { - Value interface{} + Value any } func (c SnakeCase) MarshalJSON() ([]byte, error) { @@ -35,7 +35,7 @@ func (c SnakeCase) MarshalJSON() ([]byte, error) { // 驼峰 type CamelCase struct { - Value interface{} + Value any } func (c CamelCase) MarshalJSON() ([]byte, error) { @@ -106,7 +106,7 @@ func NewBuffer() *Buffer { return &Buffer{Buffer: new(bytes.Buffer)} } -func (b *Buffer) Append(i interface{}) *Buffer { +func (b *Buffer) Append(i any) *Buffer { switch val := i.(type) { case int: b.append(strconv.Itoa(val)) diff --git a/json/structConvert.go b/json/structConvert.go index 4e4dd70..62393e2 100644 --- a/json/structConvert.go +++ b/json/structConvert.go @@ -7,18 +7,18 @@ import ( ) // 结构转换为json字符串 -func StructToJsonIndent(obj interface{}) string { +func StructToJsonIndent(obj any) string { b, _ := MarshalIndent(obj, "", " ") return bytesconv.BytesToString(b) } // 结构转换为json字符串 -func StructToJson(obj interface{}) string { +func StructToJson(obj any) string { b, _ := Marshal(obj) return bytesconv.BytesToString(b) } -func StructToMap(obj interface{}) map[string]interface{} { +func StructToMap(obj any) map[string]any { typ := reflect.TypeOf(obj) kind := typ.Kind() @@ -28,7 +28,7 @@ func StructToMap(obj interface{}) map[string]interface{} { val := reflect.ValueOf(obj) - m := make(map[string]interface{}) + m := make(map[string]any) for i := 0; i < val.NumField(); i++ { m[typ.Field(i).Name] = val.Field(i).Interface() } @@ -36,8 +36,8 @@ func StructToMap(obj interface{}) map[string]interface{} { return m } -func StructToMapViaJson(obj interface{}) map[string]interface{} { - m := make(map[string]interface{}) +func StructToMapViaJson(obj any) map[string]any { + m := make(map[string]any) j, _ := Marshal(obj) _ = Unmarshal(j, &m) @@ -45,8 +45,8 @@ func StructToMapViaJson(obj interface{}) map[string]interface{} { return m } -func toMap(obj interface{}) map[string]interface{} { - if h, ok := obj.(map[string]interface{}); ok { +func toMap(obj any) map[string]any { + if h, ok := obj.(map[string]any); ok { return h }