diff --git a/README.md b/README.md
index 2a7bf57..1dae638 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ English | [简体中文](./README_zh-CN.md)
## Feature
- 👏 Comprehensive, efficient and reusable.
-- 💪 500+ go util functions, support string, slice, datetime, net, crypt...
+- 💪 600+ go util functions, support string, slice, datetime, net, crypt...
- 💅 Only depends on two kinds of libraries: go standard library and golang.org/x.
- 🌍 Unit test for every exported function.
@@ -289,7 +289,6 @@ import "github.com/duke-git/lancet/v2/convertor"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/convertor.md#GbkToUtf8)]
[[play](https://go.dev/play/p/OphmHCN_9u8)]
-
### 6. Cryptor package is for data encryption and decryption.
```go
@@ -508,7 +507,6 @@ import "github.com/duke-git/lancet/v2/datetime"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime.md#IsWeekend)]
[[play](https://go.dev/play/p/cupRM5aZOIY)]
-
### 8. Datastructure package constains some common data structure. eg. list, linklist, stack, queue, set, tree, graph.
```go
@@ -624,7 +622,6 @@ import "github.com/duke-git/lancet/v2/fileutil"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/fileutil.md#WriteStringToFile)]
[[play](https://go.dev/play/p/GhLS6d8lH_g)]
-
### 10. Formatter contains some functions for data formatting.
```go
@@ -844,7 +841,6 @@ import "github.com/duke-git/lancet/v2/mathutil"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/mathutil.md#Sum)]
[[play](https://go.dev/play/p/1To2ImAMJA7)]
-
### 14. Netutil package contains functions to get net information and send http request.
```go
@@ -918,7 +914,25 @@ import "github.com/duke-git/lancet/v2/netutil"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil.md#IsTelnetConnected)]
[[play](https://go.dev/play/p/yiLCGtQv_ZG)]
-### 15. Random package implements some basic functions to generate random int and string.
+### 15. Pointer package contains some util functions to operate go pointer.
+
+```go
+import "github.com/duke-git/lancet/v2/pointer"
+```
+
+#### Function list:
+
+- **ExtractPointer** : return the underlying value by the given interface type.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/pointer.md#ExtractPointer)]
+ [[play](https://go.dev/play/p/D7HFjeWU2ZP)]
+- **Of** : return a pointer to the value `v`.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/pointer.md#Of)]
+ [[play](https://go.dev/play/p/HFd70x4DrMj)]
+- **Unwrap** : return the value from the pointer.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/pointer.md#Unwrap)]
+ [[play](https://go.dev/play/p/cgeu3g7cjWb)]
+
+### 16. Random package implements some basic functions to generate random int and string.
```go
import "github.com/duke-git/lancet/v2/random"
@@ -954,8 +968,7 @@ import "github.com/duke-git/lancet/v2/random"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/random.md#RandUniqueIntSlice)]
[[play](https://go.dev/play/p/uBkRSOz73Ec)]
-
-### 16. Retry package is for executing a function repeatedly until it was successful or canceled by the context.
+### 17. Retry package is for executing a function repeatedly until it was successful or canceled by the context.
```go
import "github.com/duke-git/lancet/v2/retry"
@@ -979,7 +992,7 @@ import "github.com/duke-git/lancet/v2/retry"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/retry.md#RetryTimes)]
[[play](https://go.dev/play/p/ssfVeU2SwLO)]
-### 17. Slice contains some functions to manipulate slice.
+### 18. Slice contains some functions to manipulate slice.
```go
import "github.com/duke-git/lancet/v2/slice"
@@ -1192,7 +1205,7 @@ import "github.com/duke-git/lancet/v2/slice"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#KeyBy)]
[[play](https://go.dev/play/p/uXod2LWD1Kg)]
-### 18. Stream package implements a sequence of elements supporting sequential and operations. this package is an experiment to explore if stream in go can work as the way java does. its function is very limited.
+### 19. Stream package implements a sequence of elements supporting sequential and operations. this package is an experiment to explore if stream in go can work as the way java does. its function is very limited.
```go
import "github.com/duke-git/lancet/v2/stream"
@@ -1279,7 +1292,7 @@ import "github.com/duke-git/lancet/v2/stream"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/stream.md#ToSlice)]
[[play](https://go.dev/play/p/jI6_iZZuVFE)]
-### 19. Structs package provides several high level functions to manipulate struct, tag, and field.
+### 20. Structs package provides several high level functions to manipulate struct, tag, and field.
```go
import "github.com/duke-git/lancet/v2/structs"
@@ -1312,7 +1325,7 @@ import "github.com/duke-git/lancet/v2/structs"
- **IsSlice** : check if the field is a slice
[[doc](https://github.com/duke-git/lancet/blob/main/docs/structs/field.md#IsSlice)]
-### 20. Strutil package contains some functions to manipulate string.
+### 21. Strutil package contains some functions to manipulate string.
```go
import "github.com/duke-git/lancet/v2/strutil"
@@ -1430,7 +1443,7 @@ import "github.com/duke-git/lancet/v2/strutil"
- **RemoveWhiteSpace** : remove whitespace characters from a string.
[[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil.md#RemoveWhiteSpace)]
-### 21. System package contain some functions about os, runtime, shell command.
+### 22. System package contain some functions about os, runtime, shell command.
```go
import "github.com/duke-git/lancet/v2/system"
@@ -1466,7 +1479,88 @@ import "github.com/duke-git/lancet/v2/system"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/system.md#GetOsBits)]
[[play](https://go.dev/play/p/ml-_XH3gJbW)]
-### 22. Validator package contains some functions for data validation.
+### 23. Tuple package implements tuple data type and some operations on it.
+
+```go
+import "github.com/duke-git/lancet/v2/tuple"
+```
+
+#### Function list:
+
+- **Tuple2** : represents a 2 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple2)]
+- **Tuple2_Unbox** : returns values in Tuple2.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple2_Unbox)]
+- **Zip2** : create a slice of Tuple2, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip2)]
+- **Unzip2** : create a group of slice from a slice of Tuple2.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip2)]
+- **Tuple3** : represents a 3 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple3)]
+- **Tuple3_Unbox** : returns values in Tuple3.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple3_Unbox)]
+- **Zip3** : create a slice of Tuple3, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip3)]
+- **Unzip3** : create a group of slice from a slice of Tuple3.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip3)]
+- **Tuple4** : represents a 4 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple4)]
+- **Tuple4_Unbox** : returns values in Tuple4.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple4_Unbox)]
+- **Zip4** : create a slice of Tuple4, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip4)]
+- **Unzip4** : create a group of slice from a slice of Tuple4.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip4)]
+- **Tuple5** : represents a 5 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple5)]
+- **Tuple5_Unbox** : returns values in Tuple4.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple5_Unbox)]
+- **Zip5** : create a slice of Tuple5, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip5)]
+- **Unzip5** : create a group of slice from a slice of Tuple5.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip5)]
+- **Tuple6** : represents a 6 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple6)]
+- **Tuple6_Unbox** : returns values in Tuple6.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple6_Unbox)]
+- **Zip6** : create a slice of Tuple6, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip6)]
+- **Unzip6** : create a group of slice from a slice of Tuple6.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip6)]
+- **Tuple7** : represents a 7 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple7)]
+- **Tuple7_Unbox** : returns values in Tuple7.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple7_Unbox)]
+- **Zip7** : create a slice of Tuple7, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip7)]
+- **Unzip7** : create a group of slice from a slice of Tuple7.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip7)]
+- **Tuple8** : represents a 8 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple8)]
+- **Tuple8_Unbox** : returns values in Tuple8.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple8_Unbox)]
+- **Zip8** : create a slice of Tuple8, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip8)]
+- **Unzip8** : create a group of slice from a slice of Tuple8.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip8)]
+- **Tuple9** : represents a 9 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple9)]
+- **Tuple9_Unbox** : returns values in Tuple9.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple9_Unbox)]
+- **Zip9** : create a slice of Tuple9, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip9)]
+- **Unzip9** : create a group of slice from a slice of Tuple9.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip9)]
+- **Tuple10** : represents a 10 elemnets tuple.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple10)]
+- **Tuple10_Unbox** : returns values in Tuple10.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Tuple10_Unbox)]
+- **Zip10** : create a slice of Tuple10, whose elements are correspond to the given slice elements.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Zip10)]
+- **Unzip10** : create a group of slice from a slice of Tuple10.
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple.md#Unzip10)]
+
+### 24. Validator package contains some functions for data validation.
```go
import "github.com/duke-git/lancet/v2/validator"
@@ -1574,7 +1668,7 @@ import "github.com/duke-git/lancet/v2/validator"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/validator.md#IsPrintable)]
[[play](https://go.dev/play/p/Pe1FE2gdtTP)]
-### 23. xerror package implements helpers for errors.
+### 25. xerror package implements helpers for errors.
```go
import "github.com/duke-git/lancet/v2/xerror"
diff --git a/README_zh-CN.md b/README_zh-CN.md
index 280ffb9..cfa20a4 100644
--- a/README_zh-CN.md
+++ b/README_zh-CN.md
@@ -23,7 +23,7 @@
## 特性
- 👏 全面、高效、可复用。
-- 💪 500+常用 go 工具函数,支持 string、slice、datetime、net、crypt...
+- 💪 600+常用 go 工具函数,支持 string、slice、datetime、net、crypt...
- 💅 只依赖 go 标准库和 golang.org/x。
- 🌍 所有导出函数单元测试覆盖率 100%。
@@ -288,7 +288,6 @@ import "github.com/duke-git/lancet/v2/convertor"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/convertor_zh-CN.md#GbkToUtf8)]
[[play](https://go.dev/play/p/OphmHCN_9u8)]
-
### 6. cryptor 加密包支持数据加密和解密,获取 md5,hash 值。支持 base64, md5, hmac, aes, des, rsa。
```go
@@ -844,7 +843,6 @@ import "github.com/duke-git/lancet/v2/mathutil"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/mathutil_zh-CN.md#Sum)]
[[play](https://go.dev/play/p/1To2ImAMJA7)]
-
### 14. netutil 网络包支持获取 ip 地址,发送 http 请求。
```go
@@ -918,7 +916,25 @@ import "github.com/duke-git/lancet/v2/netutil"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#IsTelnetConnected)]
[[play](https://go.dev/play/p/yiLCGtQv_ZG)]
-### 15. random 随机数生成器包,可以生成随机[]bytes, int, string。
+### 15. Pointer 包支持一些指针类型的操作。
+
+```go
+import "github.com/duke-git/lancet/v2/pointer"
+```
+
+#### 函数列表:
+
+- **ExtractPointer** : 返回传入 interface 的底层值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/pointer_zh-CN.md#ExtractPointer)]
+ [[play](https://go.dev/play/p/D7HFjeWU2ZP)]
+- **Of** : 返回传入参数的指针值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/pointer_zh-CN.md#Of)]
+ [[play](https://go.dev/play/p/HFd70x4DrMj)]
+- **Unwrap** : 返回传入指针指向的值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/pointer_zh-CN.md#Unwrap)]
+ [[play](https://go.dev/play/p/cgeu3g7cjWb)]
+
+### 16. random 随机数生成器包,可以生成随机[]bytes, int, string。
```go
import "github.com/duke-git/lancet/v2/random"
@@ -950,12 +966,11 @@ import "github.com/duke-git/lancet/v2/random"
- **UUIdV4** : 生成 UUID v4 字符串。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/random_zh-CN.md#UUIdV4)]
[[play](https://go.dev/play/p/_Z9SFmr28ft)]
-- **RandUniqueIntSlice** : 生成一个不重复的长度为n的随机int切片。
+- **RandUniqueIntSlice** : 生成一个不重复的长度为 n 的随机 int 切片。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/random_zh-CN.md#RandUniqueIntSlice)]
[[play](https://go.dev/play/p/uBkRSOz73Ec)]
-
-### 16. retry 重试执行函数直到函数运行成功或被 context cancel。
+### 17. retry 重试执行函数直到函数运行成功或被 context cancel。
```go
import "github.com/duke-git/lancet/v2/retry"
@@ -979,7 +994,7 @@ import "github.com/duke-git/lancet/v2/retry"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/retry_zh-CN.md#RetryTimes)]
[[play](https://go.dev/play/p/ssfVeU2SwLO)]
-### 17. slice 包含操作切片的方法集合。
+### 18. slice 包含操作切片的方法集合。
```go
import "github.com/duke-git/lancet/v2/slice"
@@ -1192,7 +1207,7 @@ import "github.com/duke-git/lancet/v2/slice"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#KeyBy)]
[[play](https://go.dev/play/p/uXod2LWD1Kg)]
-### 18. Stream 流,该包仅验证简单的 stream 实现,功能有限。
+### 19. Stream 流,该包仅验证简单的 stream 实现,功能有限。
```go
import "github.com/duke-git/lancet/v2/stream"
@@ -1279,7 +1294,7 @@ import "github.com/duke-git/lancet/v2/stream"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/stream_zh-CN.md#ToSlice)]
[[play](https://go.dev/play/p/jI6_iZZuVFE)]
-### 19. structs 提供操作 struct, tag, field 的相关函数。
+### 20. structs 提供操作 struct, tag, field 的相关函数。
```go
import "github.com/duke-git/lancet/v2/structs"
@@ -1314,7 +1329,7 @@ import "github.com/duke-git/lancet/v2/structs"
- **IsSlice** : 判断属性是否是切片。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/structs/field_zh-CN.md#IsSlice)]
-### 20. strutil 包含字符串处理的相关函数。
+### 21. strutil 包含字符串处理的相关函数。
```go
import "github.com/duke-git/lancet/v2/strutil"
@@ -1433,7 +1448,7 @@ import "github.com/duke-git/lancet/v2/strutil"
- **RemoveWhiteSpace** : 删除字符串中的空格。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil_zh-CN.md#RemoveWhiteSpace)]
-### 21. system 包含 os, runtime, shell command 的相关函数。
+### 22. system 包含 os, runtime, shell command 的相关函数。
```go
import "github.com/duke-git/lancet/v2/system"
@@ -1469,7 +1484,88 @@ import "github.com/duke-git/lancet/v2/system"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/system_zh-CN#GetOsBits)]
[[play](https://go.dev/play/p/ml-_XH3gJbW)]
-### 22. validator 验证器包,包含常用字符串格式验证函数。
+### 23. Tuple 包实现一个元组数据类型。
+
+```go
+import "github.com/duke-git/lancet/v2/tuple"
+```
+
+#### 函数列表:
+
+- **Tuple2** : 2 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple2)]
+- **Tuple2_Unbox** : 返回 2 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple2_Unbox)]
+- **Zip2** : 创建一个 Tuple2 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip2)]
+- **Unzip2** : 根据传入的Tuple2切片,创建一组和Tuple2元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip2)]
+- **Tuple3** : 3 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple3)]
+- **Tuple3_Unbox** : 返回 3 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple3_Unbox)]
+- **Zip3** : 创建一个 Tuple3 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip3)]
+- **Unzip3** : 根据传入的Tuple3切片,创建一组和Tuple3元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip3)]
+- **Tuple4** : 4 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple4)]
+- **Tuple4_Unbox** : 返回 4 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple4_Unbox)]
+- **Zip4** : 创建一个 Tuple4 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip4)]
+- **Unzip4** : 根据传入的Tuple4切片,创建一组和Tuple4元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip4)]
+- **Tuple5** : 5 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple5)]
+- **Tuple5_Unbox** : 返回 5 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple5_Unbox)]
+- **Zip5** : 创建一个 Tuple5 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip5)]
+- **Unzip5** : 根据传入的Tuple5切片,创建一组和Tuple5元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip5)]
+- **Tuple6** : 6 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple6)]
+- **Tuple6_Unbox** : 返回 6 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple6_Unbox)]
+- **Zip6** : 创建一个 Tuple6 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip6)]
+- **Unzip6** : 根据传入的Tuple6切片,创建一组和Tuple6元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip6)]
+- **Tuple7** : 7 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple7)]
+- **Tuple7_Unbox** : 返回 7 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple7_Unbox)]
+- **Zip7** : 创建一个 Tuple7 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip7)]
+- **Unzip7** : 根据传入的Tuple7切片,创建一组和Tuple7元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip7)]
+- **Tuple8** : 8 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple8)]
+- **Tuple8_Unbox** : 返回 8 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple8_Unbox)]
+- **Zip8** : 创建一个 Tuple8 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip8)]
+- **Unzip8** : 根据传入的Tuple8切片,创建一组和Tuple8元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip8)]
+- **Tuple9** : 9 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple9)]
+- **Tuple9_Unbox** : 返回 9 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple9_Unbox)]
+- **Zip9** : 创建一个 Tuple9 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip9)]
+- **Unzip9** : 根据传入的Tuple9切片,创建一组和Tuple9元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip9)]
+- **Tuple10** : 10 元元组
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple10)]
+- **Tuple10_Unbox** : 返回 10 元元组的字段值。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Tuple10_Unbox)]
+- **Zip10** : 创建一个 Tuple10 元组切片, 其中元组的元素和传入切片元素相对应。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Zip10)]
+- **Unzip10** : 根据传入的Tuple10切片,创建一组和Tuple10元素相对应的切片。
+ [[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip10)]
+
+### 24. validator 验证器包,包含常用字符串格式验证函数。
```go
import "github.com/duke-git/lancet/v2/validator"
@@ -1577,7 +1673,7 @@ import "github.com/duke-git/lancet/v2/validator"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsPrintable)]
[[play](https://go.dev/play/p/Pe1FE2gdtTP)]
-### 23. xerror 包实现一些错误处理函数
+### 25. xerror 包实现一些错误处理函数
```go
import "github.com/duke-git/lancet/v2/xerror"