diff --git a/README.md b/README.md
index 38ec3c3..f6ca686 100644
--- a/README.md
+++ b/README.md
@@ -99,7 +99,7 @@ func main() {
- [System](#user-content-system)
- [Tuple](#user-content-tuple)
- [Validator](#user-content-validator)
-- [Xerror](#user-content-eerror)
+- [Xerror](#user-content-xerror)
1. Algorithm package implements some basic algorithm. eg. sort, search. index
diff --git a/README_zh-CN.md b/README_zh-CN.md
index a0c6938..df74f26 100644
--- a/README_zh-CN.md
+++ b/README_zh-CN.md
@@ -74,33 +74,33 @@ func main() {
### 目录
-- [Algorithm](#Algorithm)
-- [Compare](#Compare)
-- [Concurrency](#Concurrency)
-- [Condition](#Condition)
-- [Convertor](#Convertor)
-- [Cryptor](#Cryptor)
-- [Datetime](#Datetime)
-- [Datastructure](#Datastructure)
-- [Fileutil](#Fileutil)
-- [Formatter](#Formatter)
-- [Function](#Function)
-- [Maputil](#Maputil)
-- [Mathutil](#Mathutil)
-- [Netutil](#Netutil)
-- [Pointer](#Pointer)
-- [Random](#Random)
-- [Retry](#Retry)
-- [Slice](#Slice)
-- [Stream](#Stream)
-- [Structs](#Structs)
-- [Strutil](#Strutil)
-- [System](#System)
-- [Tuple](#Tuple)
-- [Validator](#Validator)
-- [Xerror](#Xerror)
+- [Algorithm](#user-content-algorithm)
+- [Compare](#user-content-compare)
+- [Concurrency](#user-content-concurrency)
+- [Condition](#user-content-condition)
+- [Convertor](#user-content-convertor)
+- [Cryptor](#user-content-cryptor)
+- [Datetime](#user-content-datetime)
+- [Datastructure](#user-content-datastructure)
+- [Fileutil](#user-content-fileutil)
+- [Formatter](#user-content-formatter)
+- [Function](#user-content-function)
+- [Maputil](#user-content-maputil)
+- [Mathutil](#user-content-mathutil)
+- [Netutil](#user-content-netutil)
+- [Pointer](#user-content-pointer)
+- [Random](#user-content-random)
+- [Retry](#user-content-retry)
+- [Slice](#user-content-slice)
+- [Stream](#user-content-stream)
+- [Structs](#user-content-structs)
+- [Strutil](#user-content-strutil)
+- [System](#user-content-system)
+- [Tuple](#user-content-tuple)
+- [Validator](#user-content-validator)
+- [Xerror](#user-content-xerror)
- 1. algorithm 包实现一些基本查找和排序算法。 回到目录
+ 1. algorithm 包实现一些基本查找和排序算法。 回到目录
```go
import "github.com/duke-git/lancet/v2/algorithm"
@@ -145,7 +145,7 @@ import "github.com/duke-git/lancet/v2/algorithm"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/algorithm_zh-CN.md#LRUCache)]
[[play](https://go.dev/play/p/-EZjgOURufP)]
- 2. compare 包提供几个轻量级的类型比较函数。 回到目录
+ 2. compare 包提供几个轻量级的类型比较函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/compare"
@@ -174,7 +174,7 @@ import "github.com/duke-git/lancet/v2/compare"
- **InDelta** : 检查增量内两个值是否相等。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/compare_zh-CN.md#InDelta)]
- 3. concurrency 包含一些支持并发编程的功能。例如:goroutine, channel, async 等。 回到目录
+ 3. concurrency 包含一些支持并发编程的功能。例如:goroutine, channel, async 等。 回到目录
```go
import "github.com/duke-git/lancet/v2/concurrency"
@@ -213,7 +213,7 @@ import "github.com/duke-git/lancet/v2/concurrency"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/concurrency_zh-CN.md#Tee)]
[[play](https://go.dev/play/p/3TQPKnCirrP)]
- 4. condition 包含一些用于条件判断的函数。 回到目录
+ 4. condition 包含一些用于条件判断的函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/condition"
@@ -246,7 +246,7 @@ import "github.com/duke-git/lancet/v2/condition"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/condition_zh-CN.md#TernaryOperator)]
[[play](https://go.dev/play/p/ElllPZY0guT)]
- 5. convertor 转换器包支持一些常见的数据类型转换。 回到目录
+ 5. convertor 转换器包支持一些常见的数据类型转换。 回到目录
```go
import "github.com/duke-git/lancet/v2/convertor"
@@ -318,7 +318,7 @@ 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。 回到目录
+ 6. cryptor 加密包支持数据加密和解密,获取 md5,hash 值。支持 base64, md5, hmac, aes, des, rsa。 回到目录
```go
import "github.com/duke-git/lancet/v2/cryptor"
@@ -452,7 +452,7 @@ import "github.com/duke-git/lancet/v2/cryptor"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#RsaDecrypt)]
[[play](https://go.dev/play/p/uef0q1fz53I)]
- 7. datetime 日期时间处理包,格式化日期,比较日期。 回到目录
+ 7. datetime 日期时间处理包,格式化日期,比较日期。 回到目录
```go
import "github.com/duke-git/lancet/v2/datetime"
@@ -590,8 +590,7 @@ import "github.com/duke-git/lancet/v2/datetime"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#TimestampNano)]
[[play](https://go.dev/play/p/A9Oq_COrcCF)]
-
- 8. datastructure 包含一些普通的数据结构实现。例如:list, linklist, stack, queue, set, tree, graph。 回到目录
+ 8. datastructure 包含一些普通的数据结构实现。例如:list, linklist, stack, queue, set, tree, graph。 回到目录
```go
import list "github.com/duke-git/lancet/v2/datastructure/list"
@@ -609,7 +608,7 @@ import hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap"
- **List** : 线性表结构, 用切片实现。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/list_zh-CN.md)]
-- **CopyOnWriteList** : 是一个线程安全的List实现,底层使用go切片。
+- **CopyOnWriteList** : 是一个线程安全的 List 实现,底层使用 go 切片。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/copyonwritelist_zh-CN.md)]
- **Link** : 链表解构, 包括单链表和双向链表。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/link_zh-CN.md)]
@@ -626,7 +625,7 @@ import hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap"
- **Hashmap** : 哈希映射。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/hashmap_zh-CN.md)]
- 9. fileutil 包含文件基本操作。 回到目录
+ 9. fileutil 包含文件基本操作。 回到目录
```go
import "github.com/duke-git/lancet/v2/fileutil"
@@ -709,7 +708,7 @@ import "github.com/duke-git/lancet/v2/fileutil"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/fileutil_zh-CN.md#WriteStringToFile)]
[[play](https://go.dev/play/p/GhLS6d8lH_g)]
-
+
```go
import "github.com/duke-git/lancet/v2/formatter"
@@ -739,7 +738,7 @@ import "github.com/duke-git/lancet/v2/formatter"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/formatter_zh-CN.md#ParseBinaryBytes)]
[[play](https://go.dev/play/p/69v1tTT62x8)]
- 11. function 函数包控制函数执行流程,包含部分函数式编程。 回到目录
+ 11. function 函数包控制函数执行流程,包含部分函数式编程。 回到目录
```go
import "github.com/duke-git/lancet/v2/function"
@@ -775,7 +774,7 @@ import "github.com/duke-git/lancet/v2/function"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Watcher)]
[[play](https://go.dev/play/p/l2yrOpCLd1I)]
- 12. maputil 包括一些操作 map 的函数。 回到目录
+ 12. maputil 包括一些操作 map 的函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/maputil"
@@ -846,36 +845,35 @@ import "github.com/duke-git/lancet/v2/maputil"
- **IsDisjoint** : 验证两个 map 是否具有不同的 key。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#IsDisjoint)]
[[play](https://go.dev/play/p/N9qgYg_Ho6f)]
-- **HasKey** : 检查map是否包含某个key。
+- **HasKey** : 检查 map 是否包含某个 key。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#HasKey)]
[[play](https://go.dev/play/p/isZZHOsDhFc)]
-- **NewConcurrentMap** : ConcurrentMap协程安全的map结构。
+- **NewConcurrentMap** : ConcurrentMap 协程安全的 map 结构。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#NewConcurrentMap)]
[[play](https://go.dev/play/p/3PenTPETJT0)]
-- **ConcurrentMap_Set** : 在map中设置key和value。
+- **ConcurrentMap_Set** : 在 map 中设置 key 和 value。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#ConcurrentMap_Set)]
[[play](https://go.dev/play/p/3PenTPETJT0)]
-- **ConcurrentMap_Get** : 根据key获取value, 如果不存在key,返回零值。
+- **ConcurrentMap_Get** : 根据 key 获取 value, 如果不存在 key,返回零值。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#ConcurrentMap_Get)]
[[play](https://go.dev/play/p/3PenTPETJT0)]
-- **ConcurrentMap_GetOrSet** : 返回键的现有值(如果存在),否则,设置key并返回给定值。
+- **ConcurrentMap_GetOrSet** : 返回键的现有值(如果存在),否则,设置 key 并返回给定值。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#ConcurrentMap_GetOrSet)]
[[play](https://go.dev/play/p/aDcDApOK01a)]
-- **ConcurrentMap_Delete** : 删除key。
+- **ConcurrentMap_Delete** : 删除 key。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#ConcurrentMap_Delete)]
[[play](https://go.dev/play/p/uTIJZYhpVMS)]
-- **ConcurrentMap_GetAndDelete** :获取key,然后删除。
+- **ConcurrentMap_GetAndDelete** :获取 key,然后删除。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#ConcurrentMap_GetAndDelete)]
[[play](https://go.dev/play/p/ZyxeIXSZUiM)]
-- **ConcurrentMap_Has** : 验证是否包含key。
+- **ConcurrentMap_Has** : 验证是否包含 key。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#ConcurrentMap_Has)]
[[play](https://go.dev/play/p/C8L4ul9TVwf)]
-- **ConcurrentMap_Range** : 为map中每个键和值顺序调用迭代器。 如果iterator返回false,则停止迭代。
+- **ConcurrentMap_Range** : 为 map 中每个键和值顺序调用迭代器。 如果 iterator 返回 false,则停止迭代。
[[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#ConcurrentMap_Range)]
[[play](https://go.dev/play/p/iqcy7P8P0Pr)]
-
- 13. mathutil 包实现了一些数学计算的函数。 回到目录
+ 13. mathutil 包实现了一些数学计算的函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/mathutil"
@@ -956,7 +954,7 @@ 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 请求。 回到目录
+ 14. netutil 网络包支持获取 ip 地址,发送 http 请求。 回到目录
```go
import "github.com/duke-git/lancet/v2/netutil"
@@ -1029,7 +1027,7 @@ 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. pointer 包支持一些指针类型的操作。 回到目录
+ 15. pointer 包支持一些指针类型的操作。 回到目录
```go
import "github.com/duke-git/lancet/v2/pointer"
@@ -1053,7 +1051,7 @@ import "github.com/duke-git/lancet/v2/pointer"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/pointer_zh-CN.md#UnwrapOrDefault)]
[[play](https://go.dev/play/p/ZnGIHf8_o4E)]
- 16. random 随机数生成器包,可以生成随机[]bytes, int, string。 回到目录
+ 16. random 随机数生成器包,可以生成随机[]bytes, int, string。 回到目录
```go
import "github.com/duke-git/lancet/v2/random"
@@ -1089,7 +1087,7 @@ import "github.com/duke-git/lancet/v2/random"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/random_zh-CN.md#RandUniqueIntSlice)]
[[play](https://go.dev/play/p/uBkRSOz73Ec)]
- 17. retry 重试执行函数直到函数运行成功或被 context cancel。 回到目录
+ 17. retry 重试执行函数直到函数运行成功或被 context cancel。 回到目录
```go
import "github.com/duke-git/lancet/v2/retry"
@@ -1113,7 +1111,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)]
- 18. slice 包含操作切片的方法集合。
[回到目录](#index)
+ 18. slice 包含操作切片的方法集合。 [回到目录](#index)
```go
import "github.com/duke-git/lancet/v2/slice"
@@ -1329,8 +1327,7 @@ import "github.com/duke-git/lancet/v2/slice"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Join)]
[[play](https://go.dev/play/p/huKzqwNDD7V)]
-
- 19. stream 流,该包仅验证简单的 stream 实现,功能有限。 回到目录
+ 19. stream 流,该包仅验证简单的 stream 实现,功能有限。 回到目录
```go
import "github.com/duke-git/lancet/v2/stream"
@@ -1417,7 +1414,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)]
- 20. structs 提供操作 struct, tag, field 的相关函数。 回到目录
+ 20. structs 提供操作 struct, tag, field 的相关函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/structs"
@@ -1452,7 +1449,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)]
- 21. strutil 包含字符串处理的相关函数。 回到目录
+ 21. strutil 包含字符串处理的相关函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/strutil"
@@ -1571,7 +1568,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)]
- 22. system 包含 os, runtime, shell command 的相关函数。 回到目录
+ 22. system 包含 os, runtime, shell command 的相关函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/system"
@@ -1607,7 +1604,7 @@ 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)]
- 23. Tuple 包实现一个元组数据类型。 回到目录
+ 23. Tuple 包实现一个元组数据类型。 回到目录
```go
import "github.com/duke-git/lancet/v2/tuple"
@@ -1724,7 +1721,7 @@ import "github.com/duke-git/lancet/v2/tuple"
[[doc](https://github.com/duke-git/lancet/blob/main/docs/tuple_zh-CN.md#Unzip10)]
[[play](https://go.dev/play/p/-taQB6Wfre_z)]
- 24. validator 验证器包,包含常用字符串格式验证函数。 回到目录
+ 24. validator 验证器包,包含常用字符串格式验证函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/validator"
@@ -1832,7 +1829,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)]
- 25. xerror 包实现一些错误处理函数。 回到目录
+ 25. xerror 包实现一些错误处理函数。 回到目录
```go
import "github.com/duke-git/lancet/v2/xerror"