From 71aa91a58d8b45112a0756b2da223efab8b70df2 Mon Sep 17 00:00:00 2001 From: dudaodong Date: Wed, 1 Mar 2023 11:39:27 +0800 Subject: [PATCH] doc: add go playground demo --- README.md | 30 ++-- README_zh-CN.md | 324 +++++++++++++++++++++-------------------- convertor/convertor.go | 2 +- maputil/map.go | 24 +-- slice/slice.go | 7 +- strutil/string.go | 6 +- 6 files changed, 204 insertions(+), 189 deletions(-) diff --git a/README.md b/README.md index 80ea611..4a2a2a6 100644 --- a/README.md +++ b/README.md @@ -251,7 +251,7 @@ import "github.com/duke-git/lancet/v2/convertor" [[play](https://go.dev/play/p/j4DP5dquxnk)] - **CopyProperties** : copies each field from the source struct into the destination struct. [[doc](https://github.com/duke-git/lancet/blob/main/docs/convertor.md#CopyProperties)] - + [[play](https://go.dev/play/p/FOVY3XJL-6B)] ### 5. Cryptor package is for data encryption and decryption. @@ -456,9 +456,6 @@ import "github.com/duke-git/lancet/v2/datetime" [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime.md#ToIso8601)] [[play](https://go.dev/play/p/mkhOHQkdeA2)] - - - ### 7. Datastructure package constains some common data structure. eg. list, linklist, stack, queue, set, tree, graph. ```go @@ -593,7 +590,6 @@ import "github.com/duke-git/lancet/v2/function" [[doc](https://github.com/duke-git/lancet/blob/main/docs/function.md#Watcher)] [[play](https://go.dev/play/p/l2yrOpCLd1I)] - ### 11. Maputil package includes some functions to manipulate map. ```go @@ -610,14 +606,19 @@ import "github.com/duke-git/lancet/v2/maputil" [[play](https://go.dev/play/p/fSvF3wxuNG7)] - **FilterByKeys** : iterates over map, return a new map whose keys are all given keys [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#FilterByKeys)] + [[play](https://go.dev/play/p/7ov6BJHbVqh)] - **FilterByValues** : iterates over map, return a new map whose values are all given values. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#FilterByValues)] + [[play](https://go.dev/play/p/P3-9MdcXegR)] - **OmitBy** : the opposite of Filter, removes all the map elements for which the predicate function returns true. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#OmitBy)] + [[play](https://go.dev/play/p/YJM4Hj5hNwm)] - **OmitByKeys** : the opposite of FilterByKeys, extracts all the map elements which keys are not omitted. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#OmitByKeys)] + [[play](https://go.dev/play/p/jXGrWDBfSRp)] - **OmitByValues** : the opposite of FilterByValues. remov all elements whose value are in the give slice. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#OmitByValues)] + [[play](https://go.dev/play/p/XB7Y10uw20_U)] - **Intersect** : iterates over maps, return a new map of key and value pairs in all given maps. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#Intersect)] [[play](https://go.dev/play/p/Zld0oj3sjcC)] @@ -626,6 +627,7 @@ import "github.com/duke-git/lancet/v2/maputil" [[play](https://go.dev/play/p/xNB5bTb97Wd)] - **KeysBy** : creates a slice whose element is the result of function mapper invoked by every map's key. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#KeysBy)] + [[play](https://go.dev/play/p/hI371iB8Up8)] - **Merge** : merge maps, next key will overwrite previous key. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#Merge)] [[play](https://go.dev/play/p/H95LENF1uB-)] @@ -637,16 +639,22 @@ import "github.com/duke-git/lancet/v2/maputil" [[play](https://go.dev/play/p/CBKdUc5FTW6)] - **ValuesBy** : creates a slice whose element is the result of function mapper invoked by every map's value. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#ValuesBy)] + [[play](https://go.dev/play/p/sg9-oRidh8f)] - **MapKeys** : transforms a map to other type map by manipulating it's keys. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#MapKeys)] + [[play](https://go.dev/play/p/8scDxWeBDKd)] - **MapValues** : transforms a map to other type map by manipulating it's values. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#MapValues)] + [[play](https://go.dev/play/p/g92aY3fc7Iw)] - **Entries** : transforms a map into array of key/value pairs. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#Entries)] + [[play](https://go.dev/play/p/Ltb11LNcElY)] - **FromEntries** : creates a map based on a slice of key/value pairs. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#FromEntries)] + [[play](https://go.dev/play/p/fTdu4sCNjQO)] - **Transform** : transform a map to another type map. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#Transform)] + [[play](https://go.dev/play/p/P6ovfToM3zj)] - **IsDisjoint** : check two map are disjoint if they have no keys in common. [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil.md#IsDisjoint)] [[play](https://go.dev/play/p/N9qgYg_Ho6f)] @@ -759,8 +767,6 @@ import "github.com/duke-git/lancet/v2/netutil" - **ParseHttpResponse** : decode http response into target object. [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil.md#ParseHttpResponse)] - - ### 14. Random package implements some basic functions to generate random int and string. ```go @@ -834,6 +840,7 @@ import "github.com/duke-git/lancet/v2/slice" [[play](https://go.dev/play/p/_454yEHcNjf)] - **ContainBy** : returns true if predicate function return true. [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ContainBy)] + [[play](https://go.dev/play/p/49tkHfX4GNc)] - **ContainSubSlice** : check if the slice contain a given subslice or not. [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ContainSubSlice)] [[play](https://go.dev/play/p/bcuQ3UT6Sev)] @@ -890,6 +897,7 @@ import "github.com/duke-git/lancet/v2/slice" [[play](https://go.dev/play/p/SdPna-7qK4T)] - **FilterMap** : returns a slice which apply both filtering and mapping to the given slice. [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#FilterMap)] + [[play](https://go.dev/play/p/J94SZ_9MiIe)] - **Find** : iterates over elements of slice, returning the first one that passes a truth test on predicate function. [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Find)] [[play](https://go.dev/play/p/CBKeBoHVLgq)] @@ -904,6 +912,7 @@ import "github.com/duke-git/lancet/v2/slice" [[play](https://go.dev/play/p/yjYNHPyCFaF)] - **FlatMap** : manipulates a slice and transforms and flattens it to a slice of another type. [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#FlatMap)] + [[play](https://go.dev/play/p/_QARWlWs1N_F)] - **ForEach** : iterates over elements of slice and invokes function for each element. [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ForEach)] [[play](https://go.dev/play/p/DrPaa4YsHRF)] @@ -1055,6 +1064,7 @@ import "github.com/duke-git/lancet/v2/strutil" [[play](https://go.dev/play/p/sBbBxRbs8MM)] - **Pad** : pads string on the left and right side if it's shorter than size. [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil.md#Pad)] + [[play](https://go.dev/play/p/NzImQq-VF8q)] - **PadEnd** : pads string with given characters on the right side if it's shorter than limit size. Padding characters are truncated if they exceed size. [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil.md#PadEnd)] [[play](https://go.dev/play/p/9xP8rN0vz--)] @@ -1084,8 +1094,10 @@ import "github.com/duke-git/lancet/v2/strutil" [[play](https://go.dev/play/p/Ec2q4BzCpG-)] - **SplitWords** : splits a string into words, word only contains alphabetic characters. [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil.md#SplitWords)] + [[play](https://go.dev/play/p/KLiX4WiysMM)] - **WordCount** : return the number of meaningful word of a string, word only contains alphabetic characters. [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil.md#WordCount)] + [[play](https://go.dev/play/p/bj7_odx3vRf)] ### 19. System package contain some functions about os, runtime, shell command. @@ -1223,6 +1235,7 @@ import "github.com/duke-git/lancet/v2/xerror" ``` #### Function list: + - **New** : creates a new XError pointer instance with message. [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror.md#New)] [[play](https://go.dev/play/p/w4oWZts7q7f)] @@ -1247,7 +1260,7 @@ import "github.com/duke-git/lancet/v2/xerror" - **XError_Is** : checks if target error is XError and Error.id of two errors are matched. [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror.md#XError_Is)] [[play](https://go.dev/play/p/X6HBlsy58U9)] -- **XError_Values** : returns map of key and value that is set by XError.With function. +- **XError_Values** : returns map of key and value that is set by XError.With function. [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror.md#XError_Values)] [[play](https://go.dev/play/p/ow8UISXX_Dp)] - **XError_StackTrace** : returns stack trace which is compatible with pkg/errors. @@ -1263,7 +1276,6 @@ import "github.com/duke-git/lancet/v2/xerror" [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror.md#TryUnwrap)] [[play](https://go.dev/play/p/acyZVkNZEeW)] - ## How to Contribute I really appreciate any code commits which make lancet lib powerful. Please follow the rules below to create your pull request. diff --git a/README_zh-CN.md b/README_zh-CN.md index 22558a3..3c8578f 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -181,7 +181,7 @@ import "github.com/duke-git/lancet/v2/condition" [[play](https://go.dev/play/p/g2j08F_zZky) - **Xnor** : 如果 a 和 b 都是真的或 a 和 b 均是假的,则返回 true。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/condition_zh-CN.md#Xnor)] - [[play](https://go.dev/play/p/OuDB9g51643)]] +[[play](https://go.dev/play/p/OuDB9g51643)]] - **Nand** : 如果 a 和 b 都为真,返回 false,否则返回 true [[doc](https://github.com/duke-git/lancet/blob/main/docs/condition_zh-CN.md#Nand)] [[play](https://go.dev/play/p/vSRMLxLIbq8)] @@ -250,7 +250,7 @@ import "github.com/duke-git/lancet/v2/convertor" [[play](https://go.dev/play/p/j4DP5dquxnk)] - **CopyProperties** : 拷贝不同结构体之间的同名字段。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/convertor_zh-CN.md#CopyProperties)] - + [[play](https://go.dev/play/p/FOVY3XJL-6B)] ### 5. cryptor 加密包支持数据加密和解密,获取 md5,hash 值。支持 base64, md5, hmac, aes, des, rsa。 @@ -260,103 +260,101 @@ import "github.com/duke-git/lancet/v2/cryptor" #### 函数列表: -- **AesEcbEncrypt** : 使用AES ECB算法模式加密数据。 +- **AesEcbEncrypt** : 使用 AES ECB 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesEcbEncrypt)] [[play](https://go.dev/play/p/zI6xsmuQRbn)] -- **AesEcbDecrypt** : 使用AES ECB算法模解密数据。 +- **AesEcbDecrypt** : 使用 AES ECB 算法模解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesEcbDecrypt)] [[play](https://go.dev/play/p/zI6xsmuQRbn)] -- **AesCbcEncrypt** : 使用AES CBC算法模式加密数据。 +- **AesCbcEncrypt** : 使用 AES CBC 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesCbcEncrypt)] [[play](https://go.dev/play/p/IOq_g8_lKZD)] -- **AesCbcDecrypt** : 使用AES CBC算法模式解密数据。 +- **AesCbcDecrypt** : 使用 AES CBC 算法模式解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesCbcDecrypt)] [[play](https://go.dev/play/p/IOq_g8_lKZD)] -- **AesCtrCrypt** : 使用AES CTR算法模式加密/解密数据。 +- **AesCtrCrypt** : 使用 AES CTR 算法模式加密/解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesCtrCrypt)] [[play](https://go.dev/play/p/SpaZO0-5Nsp)] -- **AesCfbEncrypt** : 使用AES CFB算法模式加密数据。 +- **AesCfbEncrypt** : 使用 AES CFB 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesCfbEncrypt)] [[play](https://go.dev/play/p/tfkF10B13kH)] -- **AesCfbDecrypt** : 使用AES CFB算法模式解密数据。 +- **AesCfbDecrypt** : 使用 AES CFB 算法模式解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesCfbDecrypt)] [[play](https://go.dev/play/p/tfkF10B13kH)] -- **AesOfbEncrypt** : 使用AES OFB算法模式加密数据。 +- **AesOfbEncrypt** : 使用 AES OFB 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesOfbEncrypt)] [[play](https://go.dev/play/p/VtHxtkUj-3F)] -- **AesOfbDecrypt** : 使用AES OFB算法模式解密数据。 +- **AesOfbDecrypt** : 使用 AES OFB 算法模式解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#AesOfbDecrypt)] [[play](https://go.dev/play/p/VtHxtkUj-3F)] -- **Base64StdEncode** : 将字符串base64编码。 +- **Base64StdEncode** : 将字符串 base64 编码。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#Base64StdEncode)] [[play](https://go.dev/play/p/VOaUyQUreoK)] -- **Base64StdDecode** : 解码base64字符串。 +- **Base64StdDecode** : 解码 base64 字符串。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#Base64StdDecode)] [[play](https://go.dev/play/p/RWQylnJVgIe)] -- **DesEcbEncrypt** : 使用DES ECB算法模式加密数据。 +- **DesEcbEncrypt** : 使用 DES ECB 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesEcbEncrypt)] [[play](https://go.dev/play/p/8qivmPeZy4P)] -- **DesEcbDecrypt** : 使用DES ECB算法模解密数据。 +- **DesEcbDecrypt** : 使用 DES ECB 算法模解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesEcbDecrypt)] [[play](https://go.dev/play/p/8qivmPeZy4P)] -- **DesCbcEncrypt** : 使用DES CBC算法模式加密数据。 +- **DesCbcEncrypt** : 使用 DES CBC 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesCbcEncrypt)] [[play](https://go.dev/play/p/4cC4QvWfe3_1)] -- **DesCbcDecrypt** : 使用DES CBC算法模式解密数据。 +- **DesCbcDecrypt** : 使用 DES CBC 算法模式解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesCbcDecrypt)] [[play](https://go.dev/play/p/4cC4QvWfe3_1)] -- **DesCtrCrypt** : 使用DES CTR算法模式加密/解密数据。 +- **DesCtrCrypt** : 使用 DES CTR 算法模式加密/解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesCtrCrypt)] [[play](https://go.dev/play/p/9-T6OjKpcdw)] -- **DesCfbEncrypt** : 使用DES CFB算法模式加密数据。 +- **DesCfbEncrypt** : 使用 DES CFB 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesCfbEncrypt)] [[play](https://go.dev/play/p/y-eNxcFBlxL)] -- **DesCfbDecrypt** : 使用DES CFB算法模式解密数据。 +- **DesCfbDecrypt** : 使用 DES CFB 算法模式解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesCfbDecrypt)] [[play](https://go.dev/play/p/y-eNxcFBlxL)] -- **DesOfbEncrypt** : 使用DES OFB算法模式加密数据。 +- **DesOfbEncrypt** : 使用 DES OFB 算法模式加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesOfbEncrypt)] [[play](https://go.dev/play/p/74KmNadjN1J)] -- **DesOfbDecrypt** : 使用DES OFB算法模式解密数据。 +- **DesOfbDecrypt** : 使用 DES OFB 算法模式解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#DesOfbDecrypt)] [[play](https://go.dev/play/p/74KmNadjN1J)] -- **HmacMd5** : 返回字符串md5 hmac值。 +- **HmacMd5** : 返回字符串 md5 hmac 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#HmacMd5)] [[play](https://go.dev/play/p/uef0q1fz53I)] -- **HmacSha1** : 返回字符串sha1 hmac值。 +- **HmacSha1** : 返回字符串 sha1 hmac 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#HmacSha1)] [[play](https://go.dev/play/p/1UI4oQ4WXKM)] -- **HmacSha256** : 返回字符串sha256 hmac值。 +- **HmacSha256** : 返回字符串 sha256 hmac 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#HmacSha256)] [[play](https://go.dev/play/p/HhpwXxFhhC0)] -- **HmacSha512** : 返回字符串sha256 hmac值。 +- **HmacSha512** : 返回字符串 sha256 hmac 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#HmacSha512)] [[play](https://go.dev/play/p/59Od6m4A0Ud)] -- **Md5String** : 返回字符串md5值。 +- **Md5String** : 返回字符串 md5 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#Md5String)] [[play](https://go.dev/play/p/1bLcVetbTOI)] -- **Md5File** : 返回文件md5值。 +- **Md5File** : 返回文件 md5 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#Md5File)] -- **Sha1** : 返回字符串sha1哈希值。 +- **Sha1** : 返回字符串 sha1 哈希值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#Sha1)] [[play](https://go.dev/play/p/_m_uoD1deMT)] -- **Sha256** :返回字符串sha256哈希值。 +- **Sha256** :返回字符串 sha256 哈希值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#Sha256)] [[play](https://go.dev/play/p/tU9tfBMIAr1)] -- **Sha512** : 返回字符串sha512哈希值。 +- **Sha512** : 返回字符串 sha512 哈希值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#Sha512)] [[play](https://go.dev/play/p/3WsvLYZxsHa)] -- **GenerateRsaKey** : 在当前目录下创建rsa私钥文件和公钥文件。 +- **GenerateRsaKey** : 在当前目录下创建 rsa 私钥文件和公钥文件。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#GenerateRsaKey)] [[play](https://go.dev/play/p/zutRHrDqs0X)] -- **RsaEncrypt** : 用公钥文件ras加密数据。 +- **RsaEncrypt** : 用公钥文件 ras 加密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#RsaEncrypt)] [[play](https://go.dev/play/p/uef0q1fz53I)] -- **RsaDecrypt** : 用私钥文件rsa解密数据。 +- **RsaDecrypt** : 用私钥文件 rsa 解密数据。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/cryptor_zh-CN.md#RsaDecrypt)] [[play](https://go.dev/play/p/uef0q1fz53I)] - - ### 6. datetime 日期时间处理包,格式化日期,比较日期。 @@ -432,32 +430,30 @@ import "github.com/duke-git/lancet/v2/datetime" - **FormatStrToTime** : 将字符串格式化成时间。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#FormatStrToTime)] [[play](https://go.dev/play/p/1h9FwdU8ql4)] -- **NewUnix** : 创建一个unix时间戳。 +- **NewUnix** : 创建一个 unix 时间戳。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#NewUnix)] [[play](https://go.dev/play/p/psoSuh_kLRt)] -- **NewUnixNow** : 创建一个当前时间的unix时间戳。 +- **NewUnixNow** : 创建一个当前时间的 unix 时间戳。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#NewUnixNow)] [[play](https://go.dev/play/p/U4PPx-9D0oz)] -- **NewFormat** : 创建一个yyyy-mm-dd hh:mm:ss格式时间字符串的unix时间戳。 +- **NewFormat** : 创建一个 yyyy-mm-dd hh:mm:ss 格式时间字符串的 unix 时间戳。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#NewFormat)] [[play](https://go.dev/play/p/VkW08ZOaXPZ)] -- **NewISO8601** : 创建一个iso8601格式时间字符串的unix时间戳。 +- **NewISO8601** : 创建一个 iso8601 格式时间字符串的 unix 时间戳。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#NewISO8601)] [[play](https://go.dev/play/p/mkhOHQkdeA2)] -- **ToUnix** : 返回unix时间戳。 +- **ToUnix** : 返回 unix 时间戳。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#ToUnix)] [[play](https://go.dev/play/p/_LUiwAdocjy)] - **ToFormat** : 返回格式'yyyy-mm-dd hh:mm:ss'的日期字符串。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#ToFormat)] [[play](https://go.dev/play/p/VkW08ZOaXPZ)] -- **ToFormatForTpl** : 返回tpl格式指定的日期字符串。 +- **ToFormatForTpl** : 返回 tpl 格式指定的日期字符串。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#ToFormatForTpl)] [[play](https://go.dev/play/p/nyXxXcQJ8L5)] -- **ToIso8601** : 返回iso8601日期字符串。 +- **ToIso8601** : 返回 iso8601 日期字符串。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datetime_zh-CN.md#ToIso8601)] [[play](https://go.dev/play/p/mkhOHQkdeA2)] - - ### 7. datastructure 包含一些普通的数据结构实现。例如:list, linklist, stack, queue, set, tree, graph. @@ -486,14 +482,11 @@ import hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" [[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/set_zh-CN.md)] - **Tree** : 二叉搜索树。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/tree_zh-CN.md)] -- **Heap** : 二叉max堆。 +- **Heap** : 二叉 max 堆。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/heap_zh-CN.md)] - **Hashmap** : 哈希映射。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/datastructure/hashmap_zh-CN.md)] - - - ### 8. fileutil 包含文件基本操作。 ```go @@ -568,35 +561,34 @@ import "github.com/duke-git/lancet/v2/function" #### 函数列表: -- **After** : 创建一个函数,当该函数被调用n或更多次之后将执行传入的函数。 +- **After** : 创建一个函数,当该函数被调用 n 或更多次之后将执行传入的函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#After)] [[play](https://go.dev/play/p/eRD5k2vzUVX)] -- **Before** : 创建一个函数,当该函数被调用不超过n次时,将执行执行传入的函数。 +- **Before** : 创建一个函数,当该函数被调用不超过 n 次时,将执行执行传入的函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Before)] [[play](https://go.dev/play/p/0HqUDIFZ3IL)] - **CurryFn** : 创建柯里化函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#CurryFn)] [[play](https://go.dev/play/p/5HopfDwANKX)] -- **Compose** : 从右至左组合函数列表fnList,返回组合后的函数。 +- **Compose** : 从右至左组合函数列表 fnList,返回组合后的函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Compose)] [[play](https://go.dev/play/p/KKfugD4PKYF)] -- **Delay** : 延迟delay时间后调用函数。 +- **Delay** : 延迟 delay 时间后调用函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Delay)] [[play](https://go.dev/play/p/Ivtc2ZE-Tye)] -- **Debounced** : 创建一个debounced函数,该函数延迟调用fn直到自上次调用debounced函数后等待持续时间过去。 +- **Debounced** : 创建一个 debounced 函数,该函数延迟调用 fn 直到自上次调用 debounced 函数后等待持续时间过去。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Debounced)] [[play](https://go.dev/play/p/absuEGB_GN7)] -- **Schedule** : 每次持续时间调用函数,直到关闭返回的channel。 +- **Schedule** : 每次持续时间调用函数,直到关闭返回的 channel。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Schedule)] [[play](https://go.dev/play/p/hbON-Xeyn5N)] - **Pipeline** : 从右至左执行函数列表。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Pipeline)] [[play](https://go.dev/play/p/mPdUVvj6HD6)] -- **Watcher** : Watcher用于记录代码执行时间。可以启动/停止/重置手表定时器。获取函数执行的时间。 +- **Watcher** : Watcher 用于记录代码执行时间。可以启动/停止/重置手表定时器。获取函数执行的时间。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/function_zh-CN.md#Watcher)] [[play](https://go.dev/play/p/l2yrOpCLd1I)] - ### 11. maputil 包括一些操作 map 的函数. ```go @@ -611,24 +603,30 @@ import "github.com/duke-git/lancet/v2/maputil" - **Filter** : 迭代 map 中的每对 key 和 value,返回 map,其中的 key 和 value 符合 predicate 函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#Filter)] [[play](https://go.dev/play/p/fSvF3wxuNG7)] -- **FilterByKeys** : 迭代map, 返回一个新map,其key都是给定的key值。 +- **FilterByKeys** : 迭代 map, 返回一个新 map,其 key 都是给定的 key 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#FilterByKeys)] -- **FilterByValues** : 迭代map, 返回一个新map,其value都是给定的value值。 + [[play](https://go.dev/play/p/7ov6BJHbVqh)] +- **FilterByValues** : 迭代 map, 返回一个新 map,其 value 都是给定的 value 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#FilterByValues)] -- **OmitBy** : Filter的反向操作, 迭代map中的每对key和value, 删除符合predicate函数的key, value, 返回新map。 + [[play](https://go.dev/play/p/P3-9MdcXegR)] +- **OmitBy** : Filter 的反向操作, 迭代 map 中的每对 key 和 value, 删除符合 predicate 函数的 key, value, 返回新 map。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#OmitBy)] -- **OmitByKeys** : FilterByKeys的反向操作, 迭代map, 返回一个新map,其key不包括给定的key值。 + [[play](https://go.dev/play/p/YJM4Hj5hNwm)] +- **OmitByKeys** : FilterByKeys 的反向操作, 迭代 map, 返回一个新 map,其 key 不包括给定的 key 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#OmitByKeys)] -- **OmitByValues** : FilterByValues的反向操作, 迭代map, 返回一个新map,其value不包括给定的value值。 + [[play](https://go.dev/play/p/jXGrWDBfSRp)] +- **OmitByValues** : FilterByValues 的反向操作, 迭代 map, 返回一个新 map,其 value 不包括给定的 value 值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#OmitByValues)] + [[play](https://go.dev/play/p/XB7Y10uw20_U)] - **Intersect** : 多个 map 的交集操作。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#Intersect)] [[play](https://go.dev/play/p/Zld0oj3sjcC)] - **Keys** : 返回 map 中所有 key 组成的切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#Keys)] [[play](https://go.dev/play/p/xNB5bTb97Wd)] -- **KeysBy** : 创建一个切片,其元素是每个map的key调用mapper函数的结果。 +- **KeysBy** : 创建一个切片,其元素是每个 map 的 key 调用 mapper 函数的结果。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#KeysBy)] + [[play](https://go.dev/play/p/hI371iB8Up8)] - **Merge** : 合并多个 map, 相同的 key 会被之后的 key 覆盖。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#Merge)] [[play](https://go.dev/play/p/H95LENF1uB-)] @@ -638,19 +636,25 @@ import "github.com/duke-git/lancet/v2/maputil" - **Values** : 返回 map 中所有 values 组成的切片 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN.md#Values)] [[play](https://go.dev/play/p/CBKdUc5FTW6)] -- **ValuesBy** : 创建一个切片,其元素是每个map的value调用mapper函数的结果。 +- **ValuesBy** : 创建一个切片,其元素是每个 map 的 value 调用 mapper 函数的结果。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#ValuesBy)] -- **MapKeys** : 操作map的每个key,然后转为新的map。 + [[play](https://go.dev/play/p/sg9-oRidh8f)] +- **MapKeys** : 操作 map 的每个 key,然后转为新的 map。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#MapKeys)] -- **MapValues** : 操作map的每个value,然后转为新的map。 + [[play](https://go.dev/play/p/8scDxWeBDKd)] +- **MapValues** : 操作 map 的每个 value,然后转为新的 map。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#MapValues)] -- **Entries** : 将map转换为键/值对切片。 + [[play](https://go.dev/play/p/g92aY3fc7Iw)] +- **Entries** : 将 map 转换为键/值对切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#Entries)] -- **FromEntries** : 基于键/值对的切片创建map。 + [[play](https://go.dev/play/p/Ltb11LNcElY)] +- **FromEntries** : 基于键/值对的切片创建 map。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#FromEntries)] -- **Transform** : 将map转换为其他类型的map。 + [[play](https://go.dev/play/p/fTdu4sCNjQO)] +- **Transform** : 将 map 转换为其他类型的 map。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/maputil_zh-CN#Transform)] -- **IsDisjoint** : 验证两个map是否具有不同的key。 + [[play](https://go.dev/play/p/P6ovfToM3zj)] +- **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)] @@ -707,64 +711,61 @@ import "github.com/duke-git/lancet/v2/netutil" #### 函数列表: -- **ConvertMapToQueryString** : 将map转换成http查询字符串。 +- **ConvertMapToQueryString** : 将 map 转换成 http 查询字符串。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#ConvertMapToQueryString)] [[play](https://go.dev/play/p/jnNt_qoSnRi)] -- **EncodeUrl** : 编码url query string的值(?a=1&b=[2] -> ?a=1&b=%5B2%5D)。 +- **EncodeUrl** : 编码 url query string 的值(?a=1&b=[2] -> ?a=1&b=%5B2%5D)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#EncodeUrl)] [[play](https://go.dev/play/p/bsZ6BRC4uKI)] -- **GetInternalIp** : 获取内部ipv4。 +- **GetInternalIp** : 获取内部 ipv4。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#GetInternalIp)] [[play](https://go.dev/play/p/5mbu-gFp7ei)] -- **GetIps** : 获取系统ipv4地址列表。 +- **GetIps** : 获取系统 ipv4 地址列表。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#GetIps)] [[play](https://go.dev/play/p/NUFfcEmukx1)] -- **GetMacAddrs** : 获取系统mac地址列。 +- **GetMacAddrs** : 获取系统 mac 地址列。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#GetMacAddrs)] [[play](https://go.dev/play/p/Rq9UUBS_Xp1)] -- **GetPublicIpInfo** : 获取[公网ip信息](http://ip-api.com/json/). +- **GetPublicIpInfo** : 获取[公网 ip 信息](http://ip-api.com/json/). [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#GetPublicIpInfo)] [[play](https://go.dev/play/p/YDxIfozsRHR)] -- **GetRequestPublicIp** : 获取http请求ip。 +- **GetRequestPublicIp** : 获取 http 请求 ip。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#GetRequestPublicIp)] [[play](https://go.dev/play/p/kxU-YDc_eBo)] -- **IsPublicIP** : 判断ip是否是公共ip。 +- **IsPublicIP** : 判断 ip 是否是公共 ip。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#IsPublicIP)] [[play](https://go.dev/play/p/nmktSQpJZnn)] -- **IsInternalIP** : 判断ip是否是局域网ip。 +- **IsInternalIP** : 判断 ip 是否是局域网 ip。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#IsInternalIP)] [[play](https://go.dev/play/p/sYGhXbgO4Cb)] -- **HttpRequest** : 用于抽象HTTP请求实体的结构。 +- **HttpRequest** : 用于抽象 HTTP 请求实体的结构。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#HttpRequest)] [[play](https://go.dev/play/p/jUSgynekH7G)] -- **HttpClient** : 用于发送HTTP请求。 +- **HttpClient** : 用于发送 HTTP 请求。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#HttpClient)] [[play](https://go.dev/play/p/jUSgynekH7G)] -- **SendRequest** : 发送http请求。 +- **SendRequest** : 发送 http 请求。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#SendRequest)] [[play](https://go.dev/play/p/jUSgynekH7G)] -- **DecodeResponse** : 解析http响应体到目标结构体。 +- **DecodeResponse** : 解析 http 响应体到目标结构体。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#DecodeResponse)] [[play](https://go.dev/play/p/jUSgynekH7G)] -- **StructToUrlValues** : 将结构体转为url values, 仅转化结构体导出字段并且包含`json` tag。 +- **StructToUrlValues** : 将结构体转为 url values, 仅转化结构体导出字段并且包含`json` tag。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#StructToUrlValues)] [[play](https://go.dev/play/p/pFqMkM40w9z)] -- **HttpGetdeprecated** : 发送http get请求(已弃用:SendRequest代替)。 +- **HttpGetdeprecated** : 发送 http get 请求(已弃用:SendRequest 代替)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#HttpGet)] -- **HttpDeletedeprecated** : 发送http delete请求(已弃用:SendRequest代替)。 +- **HttpDeletedeprecated** : 发送 http delete 请求(已弃用:SendRequest 代替)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#HttpDelete)] -- **HttpPostdeprecated** : 发送http post请求(已弃用:SendRequest代替)。 +- **HttpPostdeprecated** : 发送 http post 请求(已弃用:SendRequest 代替)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#HttpPost)] -- **HttpPutdeprecated** : 发送http put请求(已弃用:SendRequest代替)。 +- **HttpPutdeprecated** : 发送 http put 请求(已弃用:SendRequest 代替)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#HttpPut)] -- **HttpPatchdeprecated** : 发送http patch请求(已弃用:SendRequest代替)。 +- **HttpPatchdeprecated** : 发送 http patch 请求(已弃用:SendRequest 代替)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#HttpPatch)] -- **ParseHttpResponse** : 解析http响应体到目标结构体。 +- **ParseHttpResponse** : 解析 http 响应体到目标结构体。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/netutil_zh-CN.md#ParseHttpResponse)] - - - ### 14. random 随机数生成器包,可以生成随机[]bytes, int, string。 ```go @@ -776,7 +777,7 @@ import "github.com/duke-git/lancet/v2/random" - **RandBytes** : 生成随机字节切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/random_zh-CN.md#RandBytes)] [[play](https://go.dev/play/p/EkiLESeXf8d)] -- **RandInt** : 生成随机int, 范围[min, max)。 +- **RandInt** : 生成随机 int, 范围[min, max)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/random_zh-CN.md#RandInt)] [[play](https://go.dev/play/p/pXyyAAI5YxD)] - **RandString** : 生成给定长度的随机字符串,只包含字母(a-zA-Z)。 @@ -794,11 +795,9 @@ import "github.com/duke-git/lancet/v2/random" - **RandNumeralOrLetter** : 生成给定长度的随机字符串(数字+字母)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/random_zh-CN.md#RandNumeralOrLetter)] [[play](https://go.dev/play/p/19CEQvpx2jD)] -- **UUIdV4** : 生成UUID v4字符串。 +- **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)] - - ### 15. retry 重试执行函数直到函数运行成功或被 context cancel。 @@ -808,24 +807,22 @@ import "github.com/duke-git/lancet/v2/retry" #### 函数列表: -- **Context** : 设置重试context参数。 +- **Context** : 设置重试 context 参数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/retry_zh-CN.md#Context)] [[play](https://go.dev/play/p/xnAOOXv9GkS)] -- **Retry** : 重试执行函数retryFunc,直到函数运行成功,或被context取消。 +- **Retry** : 重试执行函数 retryFunc,直到函数运行成功,或被 context 取消。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/retry_zh-CN.md#Retry)] [[play](https://go.dev/play/p/nk2XRmagfVF)] - **RetryFunc** : 重试执行的函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/retry_zh-CN.md#RetryFunc)] [[play](https://go.dev/play/p/nk2XRmagfVF)] -- **RetryDuration** : 设置重试间隔时间,默认3秒。 +- **RetryDuration** : 设置重试间隔时间,默认 3 秒。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/retry_zh-CN.md#RetryDuration)] [[play](https://go.dev/play/p/nk2XRmagfVF)] -- **RetryTimes** : 设置重试次数,默认5。 +- **RetryTimes** : 设置重试次数,默认 5。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/retry_zh-CN.md#RetryTimes)] [[play](https://go.dev/play/p/ssfVeU2SwLO)] - - ### 16. slice 包含操作切片的方法集合。 ```go @@ -833,36 +830,38 @@ import "github.com/duke-git/lancet/v2/slice" ``` #### 函数列表: + - **AppendIfAbsent** : 当前切片中不包含值时,将该值追加到切片中。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#AppendIfAbsent)] [[play](https://go.dev/play/p/GNdv7Jg2Taj)] -- **Contain** : 判断slice是否包含value。 +- **Contain** : 判断 slice 是否包含 value。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Contain)] [[play](https://go.dev/play/p/_454yEHcNjf)] -- **ContainBy** : 根据predicate函数判断切片是否包含某个值。 +- **ContainBy** : 根据 predicate 函数判断切片是否包含某个值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ContainBy)] -- **ContainSubSlice** : 判断slice是否包含subslice。 + [[play](https://go.dev/play/p/49tkHfX4GNc)] +- **ContainSubSlice** : 判断 slice 是否包含 subslice。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ContainSubSlice)] [[play](https://go.dev/play/p/bcuQ3UT6Sev)] -- **Chunk** : 按照size参数均分slice。 +- **Chunk** : 按照 size 参数均分 slice。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Chunk)] [[play](https://go.dev/play/p/b4Pou5j2L_C)] -- **Compact** : 去除slice中的假值(false values are false, nil, 0, "")。 +- **Compact** : 去除 slice 中的假值(false values are false, nil, 0, "")。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Compact)] [[play](https://go.dev/play/p/pO5AnxEr3TK)] -- **Concat** : 合并多个slices到一个slice中。 +- **Concat** : 合并多个 slices 到一个 slice 中。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Concat)] [[play](https://go.dev/play/p/gPt-q7zr5mk)] - **Count** : 返回切片中指定元素的个数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Count)] [[play](https://go.dev/play/p/Mj4oiEnQvRJ)] -- **CountBy** : 遍历切片,对每个元素执行函数predicate. 返回符合函数返回值为true的元素的个数。 +- **CountBy** : 遍历切片,对每个元素执行函数 predicate. 返回符合函数返回值为 true 的元素的个数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#CountBy)] [[play](https://go.dev/play/p/tHOccTMDZCC)] - **Difference** : 创建一个切片,其元素不包含在另一个给定切片中。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Difference)] [[play](https://go.dev/play/p/VXvadzLzhDa)] -- **DifferenceBy** : 将两个slice中的每个元素调用iteratee函数,并比较它们的返回值,如果不相等返回在slice中对应的值。 +- **DifferenceBy** : 将两个 slice 中的每个元素调用 iteratee 函数,并比较它们的返回值,如果不相等返回在 slice 中对应的值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DifferenceBy)] [[play](https://go.dev/play/p/DiivgwM5OnC)] - **DifferenceWith** : 接受比较器函数,该比较器被调用以将切片的元素与值进行比较。 结果值的顺序和引用由第一个切片确定。 @@ -871,36 +870,37 @@ import "github.com/duke-git/lancet/v2/slice" - **DeleteAt** : 删除切片中指定开始索引到结束索引的元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DeleteAt)] [[play](https://go.dev/play/p/pJ-d6MUWcvK)] -- **Drop** : 从切片头部删除n个元素。 +- **Drop** : 从切片头部删除 n 个元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Drop)] [[play](https://go.dev/play/p/jnPO2yQsT8H)] -- **DropRight** : 从切片尾部删除n个元素。 +- **DropRight** : 从切片尾部删除 n 个元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DropRight)] [[play](https://go.dev/play/p/8bcXvywZezG)] -- **DropWhile** : 从切片的头部删除n个元素,这个n个元素满足predicate函数返回true。 +- **DropWhile** : 从切片的头部删除 n 个元素,这个 n 个元素满足 predicate 函数返回 true。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DropWhile)] [[play](https://go.dev/play/p/4rt252UV_qs)] -- **DropRightWhile** : 从切片的尾部删除n个元素,这个n个元素满足predicate函数返回true。 +- **DropRightWhile** : 从切片的尾部删除 n 个元素,这个 n 个元素满足 predicate 函数返回 true。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DropRightWhile)] [[play](https://go.dev/play/p/6wyK3zMY56e)] - **Equal** : 检查两个切片是否相等,相等条件:切片长度相同,元素顺序和值都相同。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Equal)] [[play](https://go.dev/play/p/WcRQJ37ifPa)] -- **EqualWith** : 检查两个切片是否相等,相等条件:对两个切片的元素调用比较函数comparator,返回true。 +- **EqualWith** : 检查两个切片是否相等,相等条件:对两个切片的元素调用比较函数 comparator,返回 true。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#EqualWith)] [[play](https://go.dev/play/p/b9iygtgsHI1)] -- **Every** : 如果切片中的所有值都通过谓词函数,则返回true。 +- **Every** : 如果切片中的所有值都通过谓词函数,则返回 true。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Every)] [[play](https://go.dev/play/p/R8U6Sl-j8cD)] -- **Filter** : 返回切片中通过predicate函数真值测试的所有元素。 +- **Filter** : 返回切片中通过 predicate 函数真值测试的所有元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Filter)] [[play](https://go.dev/play/p/SdPna-7qK4T)] -- **FilterMap** : 返回一个将filter和map操作应用于给定切片的切片。 +- **FilterMap** : 返回一个将 filter 和 map 操作应用于给定切片的切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#FilterMap)] -- **Find** : 遍历切片的元素,返回第一个通过predicate函数真值测试的元素。 + [[play](https://go.dev/play/p/J94SZ_9MiIe)] +- **Find** : 遍历切片的元素,返回第一个通过 predicate 函数真值测试的元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Find)] [[play](https://go.dev/play/p/CBKeBoHVLgq)] -- **FindLast** : 从头到尾遍历slice的元素,返回最后一个通过predicate函数真值测试的元素。 +- **FindLast** : 从头到尾遍历 slice 的元素,返回最后一个通过 predicate 函数真值测试的元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#FindLast)] [[play](https://go.dev/play/p/FFDPV_j7URd)] - **Flatten** : 将多维切片展平一层。 @@ -911,19 +911,20 @@ import "github.com/duke-git/lancet/v2/slice" [[play](https://go.dev/play/p/yjYNHPyCFaF)] - **FlatMap** : 将切片转换为其它类型切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#FlatMap)] -- **ForEach** : 遍历切片的元素并为每个元素调用iteratee函数。 + [[play](https://go.dev/play/p/_QARWlWs1N_F)] +- **ForEach** : 遍历切片的元素并为每个元素调用 iteratee 函数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ForEach)] [[play](https://go.dev/play/p/DrPaa4YsHRF)] - **GroupBy** : 迭代切片的元素,每个元素将按条件分组,返回两个切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#GroupBy)] [[play](https://go.dev/play/p/QVkPxzPR0iA)] -- **GroupWith** : 创建一个map,key是iteratee遍历slice中的每个元素返回的结果。值是切片元素。 +- **GroupWith** : 创建一个 map,key 是 iteratee 遍历 slice 中的每个元素返回的结果。值是切片元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#GroupWith)] [[play](https://go.dev/play/p/ApCvMNTLO8a)] -- **IntSlicedeprecated** : 将接口切片转换为int切片。 +- **IntSlicedeprecated** : 将接口切片转换为 int 切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IntSlice)] [[play](https://go.dev/play/p/FdQXF0Vvqs-)] -- **InterfaceSlicedeprecated** : 将值转换为interface切片。 +- **InterfaceSlicedeprecated** : 将值转换为 interface 切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InterfaceSlice)] [[play](https://go.dev/play/p/FdQXF0Vvqs-)] - **Intersection** : 返回多个切片的交集。 @@ -938,7 +939,7 @@ import "github.com/duke-git/lancet/v2/slice" - **LastIndexOf** : 返回在切片中找到最后一个值的索引,如果找不到该值,则返回-1。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#LastIndexOf)] [[play](https://go.dev/play/p/DokM4cf1IKH)] -- **Map** : 对slice中的每个元素执行map函数以创建一个新切片。 +- **Map** : 对 slice 中的每个元素执行 map 函数以创建一个新切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Map)] [[play](https://go.dev/play/p/biaTefqPquw)] - **Merge** : 合并多个切片(不会消除重复元素)。 @@ -947,16 +948,16 @@ import "github.com/duke-git/lancet/v2/slice" - **Reverse** : 反转切片中的元素顺序。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reverse)] [[play](https://go.dev/play/p/8uI8f1lwNrQ)] -- **Reduce** : 将切片中的元素依次运行iteratee函数,返回运行结果。 +- **Reduce** : 将切片中的元素依次运行 iteratee 函数,返回运行结果。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reduce)] [[play](https://go.dev/play/p/_RfXJJWIsIm)] -- **Replace** : 返回切片的副本,其中前n个不重叠的old替换为new。 +- **Replace** : 返回切片的副本,其中前 n 个不重叠的 old 替换为 new。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Replace)] [[play](https://go.dev/play/p/P5mZp7IhOFo)] -- **ReplaceAll** : 返回切片的副本,将其中old全部替换为new。 +- **ReplaceAll** : 返回切片的副本,将其中 old 全部替换为 new。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ReplaceAll)] [[play](https://go.dev/play/p/CzqXMsuYUrx)] -- **Repeat** : 创建一个切片,包含n个传入的item。 +- **Repeat** : 创建一个切片,包含 n 个传入的 item。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Repeat)] [[play](https://go.dev/play/p/1CbOmtgILUU)] - **Shuffle** : 随机打乱切片中的元素顺序。 @@ -971,19 +972,19 @@ import "github.com/duke-git/lancet/v2/slice" - **IsSorted** : 检查切片元素是否是有序的(升序或降序)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IsSorted)] [[play](https://go.dev/play/p/nCE8wPLwSA-)] -- **IsSortedByKey** : 通过iteratee函数,检查切片元素是否是有序的。 +- **IsSortedByKey** : 通过 iteratee 函数,检查切片元素是否是有序的。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IsSortedByKey)] [[play](https://go.dev/play/p/tUoGB7DOHI4)] - **Sort** : 对任何有序类型(数字或字符串)的切片进行排序,使用快速排序算法。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Sort)] [[play](https://go.dev/play/p/V9AVjzf_4Fk)] -- **SortBy** : 按照less函数确定的升序规则对切片进行排序。排序不保证稳定性。 +- **SortBy** : 按照 less 函数确定的升序规则对切片进行排序。排序不保证稳定性。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SortBy)] [[play](https://go.dev/play/p/DAhLQSZEumm)] -- **SortByFielddeprecated** : 按字段对结构切片进行排序。slice元素应为struct,字段类型应为int、uint、string或bool。 +- **SortByFielddeprecated** : 按字段对结构切片进行排序。slice 元素应为 struct,字段类型应为 int、uint、string 或 bool。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SortByField)] [[play](https://go.dev/play/p/fU1prOBP9p1)] -- **Some** : 如果列表中的任何值通过谓词函数,则返回true。 +- **Some** : 如果列表中的任何值通过谓词函数,则返回 true。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Some)] [[play](https://go.dev/play/p/4pO9Xf9NDGS)] - **StringSlicedeprecated** : 将接口切片转换为字符串切片。 @@ -1001,7 +1002,7 @@ import "github.com/duke-git/lancet/v2/slice" - **Unique** : 删除切片中的重复元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Unique)] [[play](https://go.dev/play/p/AXw0R3ZTE6a)] -- **UniqueBy** : 对切片的每个元素调用iteratee函数,然后删除重复元素。 +- **UniqueBy** : 对切片的每个元素调用 iteratee 函数,然后删除重复元素。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UniqueBy)] [[play](https://go.dev/play/p/UR323iZLDpv)] - **Union** : 合并多个切片。 @@ -1016,10 +1017,9 @@ import "github.com/duke-git/lancet/v2/slice" - **Without** : 创建一个不包括所有给定值的切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Without)] [[play](https://go.dev/play/p/bwhEXEypThg)] -- **KeyBy** :将切片每个元素调用函数后转为map。 +- **KeyBy** :将切片每个元素调用函数后转为 map。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#KeyBy)] [[play](https://go.dev/play/p/uXod2LWD1Kg)] - ### 17. strutil 包含字符串处理的相关函数。 @@ -1062,8 +1062,9 @@ import "github.com/duke-git/lancet/v2/strutil" - **UpperFirst** : 将字符串的第一个字符转换为大写形式。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil_zh-CN.md#UpperFirst)] [[play](https://go.dev/play/p/sBbBxRbs8MM)] -- **Pad** : 如果字符串长度短于size,则在左右两侧填充字符串。 +- **Pad** : 如果字符串长度短于 size,则在左右两侧填充字符串。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil_zh-CN.md#Pad)] + [[play](https://go.dev/play/p/NzImQq-VF8q)] - **PadEnd** : 如果字符串短于限制大小,则在右侧用给定字符填充字符串。 如果填充字符超出大小,它们将被截断。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil_zh-CN.md#PadEnd)] [[play](https://go.dev/play/p/9xP8rN0vz--)] @@ -1093,8 +1094,11 @@ import "github.com/duke-git/lancet/v2/strutil" [[play](https://go.dev/play/p/Ec2q4BzCpG-)] - **SplitWords** : 将字符串拆分为单词,只支持字母字符单词。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil_zh-CN.md#SplitWords)] + [[play](https://go.dev/play/p/KLiX4WiysMM)] - **WordCount** : 返回有意义单词的数量,只支持字母字符单词。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/strutil_zh-CN.md#WordCount)] + [[play](https://go.dev/play/p/bj7_odx3vRf)] + ### 18. system 包含 os, runtime, shell command 的相关函数。 @@ -1161,7 +1165,7 @@ import "github.com/duke-git/lancet/v2/validator" - **IsAllLower** : 验证字符串是否全是小写英文字母。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsAllLower)] [[play](https://go.dev/play/p/GjqCnOfV6cM)] -- **IsBase64** : 验证字符串是否是base64编码。 +- **IsBase64** : 验证字符串是否是 base64 编码。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsBase64)] [[play](https://go.dev/play/p/sWHEySAt6hl)] - **IsChineseMobile** : 验证字符串是否是中国手机号码。 @@ -1176,7 +1180,7 @@ import "github.com/duke-git/lancet/v2/validator" - **IsCreditCard** : 验证字符串是否是信用卡号码。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsCreditCard)] [[play](https://go.dev/play/p/sNwwL6B0-v4)] -- **IsDns** : 验证字符串是否是有效dns。 +- **IsDns** : 验证字符串是否是有效 dns。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsDns)] [[play](https://go.dev/play/p/jlYApVLLGTZ)] - **IsEmail** : 验证字符串是否是有效电子邮件地址。 @@ -1191,7 +1195,7 @@ import "github.com/duke-git/lancet/v2/validator" - **IsNumberStr** : 验证字符串是否是可以转换为数字。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsNumberStr)] [[play](https://go.dev/play/p/LzaKocSV79u)] -- **IsJSON** : 验证字符串是否是有效json。 +- **IsJSON** : 验证字符串是否是有效 json。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsJSON)] [[play](https://go.dev/play/p/sRS6c4K8jGk)] - **IsRegexMatch** : 验证字符串是否可以匹配正则表达式。 @@ -1200,19 +1204,19 @@ import "github.com/duke-git/lancet/v2/validator" - **IsIntStr** : 验证字符串是否是可以转换为整数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsIntStr)] [[play](https://go.dev/play/p/jQRtFv-a0Rk)] -- **IsIp** : 验证字符串是否是ip地址。 +- **IsIp** : 验证字符串是否是 ip 地址。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsIp)] [[play](https://go.dev/play/p/FgcplDvmxoD)] -- **IsIpV4** : 验证字符串是否是ipv4地址。 +- **IsIpV4** : 验证字符串是否是 ipv4 地址。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsIpV4)] [[play](https://go.dev/play/p/zBGT99EjaIu)] -- **IsIpV6** : 验证字符串是否是ipv6地址。 +- **IsIpV6** : 验证字符串是否是 ipv6 地址。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsIpV6)] [[play](https://go.dev/play/p/AHA0r0AzIdC)] - **IsStrongPassword** : 验证字符串是否是强密码:(字母+数字+特殊字符)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsStrongPassword)] [[play](https://go.dev/play/p/QHdVcSQ3uDg)] -- **IsUrl** : 验证字符串是否是url。 +- **IsUrl** : 验证字符串是否是 url。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsUrl)] [[play](https://go.dev/play/p/pbJGa7F98Ka)] - **IsWeakPassword** : 验证字符串是否是弱密码(只包含字母+数字)。 @@ -1221,10 +1225,9 @@ import "github.com/duke-git/lancet/v2/validator" - **IsZeroValue** : 判断传入的参数值是否为零值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsZeroValue)] [[play](https://go.dev/play/p/UMrwaDCi_t4)] -- **IsGBK** : 检查数据编码是否为gbk(汉字内部代码扩展规范)。 +- **IsGBK** : 检查数据编码是否为 gbk(汉字内部代码扩展规范)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/validator_zh-CN.md#IsGBK)] [[play](https://go.dev/play/p/E2nt3unlmzP)] - ### 20. xerror 包实现一些错误处理函数 @@ -1234,46 +1237,45 @@ import "github.com/duke-git/lancet/v2/xerror" #### 函数列表: -- **New** : 创建XError对象实例。 +- **New** : 创建 XError 对象实例。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#New)] [[play](https://go.dev/play/p/w4oWZts7q7f)] -- **Wrap** : 根据error对象创建XError对象实例,可添加message。 +- **Wrap** : 根据 error 对象创建 XError 对象实例,可添加 message。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#Wrap)] [[play](https://go.dev/play/p/5385qT2dCi4)] -- **Unwrap** : 从error对象中解构出XError。 +- **Unwrap** : 从 error 对象中解构出 XError。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#Unwrap)] [[play](https://go.dev/play/p/LKMLep723tu)] -- **XError_Wrap** : 创建新的XError对象并将消息和id复制到新的对象中。 +- **XError_Wrap** : 创建新的 XError 对象并将消息和 id 复制到新的对象中。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_Wrap)] [[play](https://go.dev/play/p/5385qT2dCi4)] -- **XError_Unwrap** : 解构XEerror为error对象。适配github.com/pkg/errors。 +- **XError_Unwrap** : 解构 XEerror 为 error 对象。适配 github.com/pkg/errors。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_Unwrap)] [[play](https://go.dev/play/p/VUXJ8BST4c6)] -- **XError_With** : 添加与XError对象的键和值。 +- **XError_With** : 添加与 XError 对象的键和值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_With)] [[play](https://go.dev/play/p/ow8UISXX_Dp)] -- **XError_Id** : 设置XError对象的id。 +- **XError_Id** : 设置 XError 对象的 id。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_Id)] [[play](https://go.dev/play/p/X6HBlsy58U9)] -- **XError_Is** : 检查目标error是否为XError,两个错误中的error.id是否匹配。 +- **XError_Is** : 检查目标 error 是否为 XError,两个错误中的 error.id 是否匹配。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_Is)] [[play](https://go.dev/play/p/X6HBlsy58U9)] -- **XError_Values** : 返回由With设置的键和值的映射。将合并所有XError键和值。 +- **XError_Values** : 返回由 With 设置的键和值的映射。将合并所有 XError 键和值。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_Values)] [[play](https://go.dev/play/p/ow8UISXX_Dp)] -- **XError_StackTrace** : 返回与pkg/error兼容的堆栈信息。 +- **XError_StackTrace** : 返回与 pkg/error 兼容的堆栈信息。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_StackTrace)] [[play](https://go.dev/play/p/6FAvSQpa7pc)] -- **XError_Info** : 返回可打印的XError对象信息。 +- **XError_Info** : 返回可打印的 XError 对象信息。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_Info)] [[play](https://go.dev/play/p/1ZX0ME1F-Jb)] -- **XError_Error** : 实现标准库的error接口。 +- **XError_Error** : 实现标准库的 error 接口。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#XError_Error)] [[play](https://go.dev/play/p/w4oWZts7q7f)] -- **TryUnwrap** : 检查error, 如果err为nil则展开,则它返回一个有效值,如果err不是nil则Unwrap使用err发生panic。 +- **TryUnwrap** : 检查 error, 如果 err 为 nil 则展开,则它返回一个有效值,如果 err 不是 nil 则 Unwrap 使用 err 发生 panic。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#TryUnwrap)] [[play](https://go.dev/play/p/acyZVkNZEeW)] - ## 如何贡献代码 diff --git a/convertor/convertor.go b/convertor/convertor.go index 5b995ea..7df9458 100644 --- a/convertor/convertor.go +++ b/convertor/convertor.go @@ -343,7 +343,7 @@ func DeepClone[T any](src T) T { } // CopyProperties copies each field from the source into the destination. It recursively copies struct pointers and interfaces that contain struct pointers. -// Play: todo +// Play: https://go.dev/play/p/FOVY3XJL-6B func CopyProperties[T, U any](dst T, src U) (err error) { defer func() { if e := recover(); e != nil { diff --git a/maputil/map.go b/maputil/map.go index 16e3976..c1fd3e9 100644 --- a/maputil/map.go +++ b/maputil/map.go @@ -39,7 +39,7 @@ func Values[K comparable, V any](m map[K]V) []V { } // KeysBy creates a slice whose element is the result of function mapper invoked by every map's key. -// Play: todo +// Play: https://go.dev/play/p/hI371iB8Up8 func KeysBy[K comparable, V any, T any](m map[K]V, mapper func(item K) T) []T { keys := make([]T, 0, len(m)) @@ -51,7 +51,7 @@ func KeysBy[K comparable, V any, T any](m map[K]V, mapper func(item K) T) []T { } // ValuesBy creates a slice whose element is the result of function mapper invoked by every map's value. -// Play: todo +// Play: https://go.dev/play/p/sg9-oRidh8f func ValuesBy[K comparable, V any, T any](m map[K]V, mapper func(item V) T) []T { keys := make([]T, 0, len(m)) @@ -98,7 +98,7 @@ func Filter[K comparable, V any](m map[K]V, predicate func(key K, value V) bool) } // FilterByKeys iterates over map, return a new map whose keys are all given keys. -// Play: todo +// Play: https://go.dev/play/p/7ov6BJHbVqh func FilterByKeys[K comparable, V any](m map[K]V, keys []K) map[K]V { result := make(map[K]V) @@ -111,7 +111,7 @@ func FilterByKeys[K comparable, V any](m map[K]V, keys []K) map[K]V { } // FilterByValues iterates over map, return a new map whose values are all given values. -// Play: todo +// Play: https://go.dev/play/p/P3-9MdcXegR func FilterByValues[K comparable, V comparable](m map[K]V, values []V) map[K]V { result := make(map[K]V) @@ -124,7 +124,7 @@ func FilterByValues[K comparable, V comparable](m map[K]V, values []V) map[K]V { } // OmitBy is the opposite of Filter, removes all the map elements for which the predicate function returns true. -// Play: todo +// Play: https://go.dev/play/p/YJM4Hj5hNwm func OmitBy[K comparable, V any](m map[K]V, predicate func(key K, value V) bool) map[K]V { result := make(map[K]V) @@ -137,7 +137,7 @@ func OmitBy[K comparable, V any](m map[K]V, predicate func(key K, value V) bool) } // OmitByKeys the opposite of FilterByKeys, extracts all the map elements which keys are not omitted. -// Play: todo +// Play: https://go.dev/play/p/jXGrWDBfSRp func OmitByKeys[K comparable, V any](m map[K]V, keys []K) map[K]V { result := make(map[K]V) @@ -150,7 +150,7 @@ func OmitByKeys[K comparable, V any](m map[K]V, keys []K) map[K]V { } // OmitByValues the opposite of FilterByValues. remov all elements whose value are in the give slice. -// Play: todo +// Play: https://go.dev/play/p/XB7Y10uw20_U func OmitByValues[K comparable, V comparable](m map[K]V, values []V) map[K]V { result := make(map[K]V) @@ -227,7 +227,7 @@ type Entry[K comparable, V any] struct { } // Entries transforms a map into array of key/value pairs. -// Play: todo +// Play: https://go.dev/play/p/Ltb11LNcElY func Entries[K comparable, V any](m map[K]V) []Entry[K, V] { entries := make([]Entry[K, V], 0, len(m)) @@ -242,7 +242,7 @@ func Entries[K comparable, V any](m map[K]V) []Entry[K, V] { } // FromEntries creates a map based on a slice of key/value pairs -// Play: todo +// Play: https://go.dev/play/p/fTdu4sCNjQO func FromEntries[K comparable, V any](entries []Entry[K, V]) map[K]V { result := make(map[K]V, len(entries)) @@ -254,7 +254,7 @@ func FromEntries[K comparable, V any](entries []Entry[K, V]) map[K]V { } // Transform a map to another type map. -// Play: todo +// Play: https://go.dev/play/p/P6ovfToM3zj func Transform[K1 comparable, V1 any, K2 comparable, V2 any](m map[K1]V1, iteratee func(key K1, value V1) (K2, V2)) map[K2]V2 { result := make(map[K2]V2, len(m)) @@ -267,7 +267,7 @@ func Transform[K1 comparable, V1 any, K2 comparable, V2 any](m map[K1]V1, iterat } // MapKeys transforms a map to other type map by manipulating it's keys. -// Play: todo +// Play: https://go.dev/play/p/8scDxWeBDKd func MapKeys[K comparable, V any, T comparable](m map[K]V, iteratee func(key K, value V) T) map[T]V { result := make(map[T]V, len(m)) @@ -279,7 +279,7 @@ func MapKeys[K comparable, V any, T comparable](m map[K]V, iteratee func(key K, } // MapValues transforms a map to other type map by manipulating it's values. -// Play: todo +// Play: https://go.dev/play/p/g92aY3fc7Iw func MapValues[K comparable, V any, T any](m map[K]V, iteratee func(key K, value V) T) map[K]T { result := make(map[K]T, len(m)) diff --git a/slice/slice.go b/slice/slice.go index 98c79a6..9585941 100644 --- a/slice/slice.go +++ b/slice/slice.go @@ -22,7 +22,7 @@ var ( ) // Contain check if the target value is in the slice or not. -// Play: todo +// Play: https://go.dev/play/p/_454yEHcNjf func Contain[T comparable](slice []T, target T) bool { for _, item := range slice { if item == target { @@ -34,6 +34,7 @@ func Contain[T comparable](slice []T, target T) bool { } // ContainBy returns true if predicate function return true. +// Play: https://go.dev/play/p/49tkHfX4GNc func ContainBy[T any](slice []T, predicate func(item T) bool) bool { for _, item := range slice { if predicate(item) { @@ -436,7 +437,7 @@ func Map[T any, U any](slice []T, iteratee func(index int, item T) U) []U { // iteratee callback function should returntwo values: // 1, mapping result. // 2, whether the result element should be included or not -// Play: todo +// Play: https://go.dev/play/p/J94SZ_9MiIe func FilterMap[T any, U any](slice []T, iteratee func(index int, item T) (U, bool)) []U { result := []U{} @@ -450,7 +451,7 @@ func FilterMap[T any, U any](slice []T, iteratee func(index int, item T) (U, boo } // FlatMap manipulates a slice and transforms and flattens it to a slice of another type. -// Play: todo +// Play: https://go.dev/play/p/_QARWlWs1N_F func FlatMap[T any, U any](slice []T, iteratee func(index int, item T) []U) []U { result := make([]U, 0, len(slice)) diff --git a/strutil/string.go b/strutil/string.go index ebeacd6..19b7861 100644 --- a/strutil/string.go +++ b/strutil/string.go @@ -69,7 +69,7 @@ func LowerFirst(s string) string { // PadStart pads string on the left and right side if it's shorter than size. // Padding characters are truncated if they exceed size. -// Play: todo +// Play: https://go.dev/play/p/NzImQq-VF8q func Pad(source string, size int, padStr string) string { return padAtPosition(source, size, padStr, 0) } @@ -289,7 +289,7 @@ func Substring(s string, offset int, length uint) string { } // SplitWords splits a string into words, word only contains alphabetic characters. -// Play: todo +// Play: https://go.dev/play/p/KLiX4WiysMM func SplitWords(s string) []string { var word string var words []string @@ -331,7 +331,7 @@ func SplitWords(s string) []string { } // WordCount return the number of meaningful word, word only contains alphabetic characters. -// Play: todo +// Play: https://go.dev/play/p/bj7_odx3vRf func WordCount(s string) int { var r rune var size, count int