From cf42ed649a026f7e93cb825e0f3bbf8b03722263 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Fri, 29 Dec 2023 14:11:20 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20slice=20?= =?UTF-8?q?=E5=8C=85=E4=B8=AD=E7=9A=84=20Copy=20=E5=92=8C=20CopyMatrix=20?= =?UTF-8?q?=E7=9A=84=E5=87=BD=E6=95=B0=E7=AD=BE=E5=90=8D=E5=92=8C=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=96=B9=E5=BC=8F=EF=BC=8C=E4=B8=8D=E5=BD=B1=E5=93=8D?= =?UTF-8?q?=E5=B7=B2=E6=9C=89=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/slice/slice.go | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/utils/slice/slice.go b/utils/slice/slice.go index 7948a1a..da75a7a 100644 --- a/utils/slice/slice.go +++ b/utils/slice/slice.go @@ -29,25 +29,24 @@ func Del[V any](slice *[]V, index int) { } // Copy 复制特定切片 -func Copy[V any](slice []V) []V { - var s = make([]V, len(slice), len(slice)) - for i := 0; i < len(slice); i++ { - s[i] = slice[i] +// - 该函数已经可使用标准库 slices.Clone 代替,但是由于调用者可能繁多,所以该函数将不会被移除 +func Copy[S ~[]V, V any](slice S) S { + if slice == nil { + return nil } - return s + return append(slice[:0:0], slice...) } // CopyMatrix 复制二维数组 -func CopyMatrix[V any](slice [][]V) [][]V { - var s = make([][]V, len(slice), len(slice)) - for i := 0; i < len(slice); i++ { - is := make([]V, len(slice[0])) - for j := 0; j < len(slice[0]); j++ { - is[j] = slice[i][j] - } - s[i] = is +func CopyMatrix[S ~[][]V, V any](slice S) S { + if slice == nil { + return nil } - return s + var result = make(S, len(slice)) + for i := 0; i < len(slice); i++ { + result[i] = Copy(slice[i]) + } + return result } // Insert 在特定索引插入元素