github.com/duke-git/lancet/v2/validator
lancet(柳葉刀)是一個全面、高效、可複用的go語言工具函式庫。 lancet受到了java apache common包和lodash.js的啟發。
官網 | English
特性
- 👏 全面、高效、可複用。
- 💪 600+常用 go 工具函式,支援 string、slice、datetime、net、crypt...
- 💅 只依賴 go 標準庫和 golang.org/x。
- 🌍 所有匯出函式單元測試覆蓋率 100%。
安裝
Note:
- 使用 go1.18 及以上版本的使用者,建議安裝 v2.x.x。 因為 v2.x.x 應用 go1.18 的泛型重寫了大部分函式。
go get github.com/duke-git/lancet/v2 //安裝v2最新版本v2.x.x
- 使用 go1.18 以下版本的使用者,必須安裝 v1.x.x。目前最新的 v1 版本是 v1.4.3。
go get github.com/duke-git/lancet// 使用go1.18以下版本, 必須安裝v1.x.x版本
用法
lancet 是以包的結構組織程式碼的,使用時需要匯入相應的包名。例如:如果使用字串相關函式,需要匯入 strutil 包:
import "github.com/duke-git/lancet/v2/strutil"
示例
此處以字串工具函式 Reverse(逆序字串)為例,需要匯入 strutil 包:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/strutil"
)
func main() {
s := "hello"
rs := strutil.Reverse(s)
fmt.Println(rs) //olleh
}
文件
目錄
- Algorithm
- Compare
- Concurrency
- Condition
- Convertor
- Cryptor
- Datetime
- Datastructure
- Fileutil
- Formatter
- Function
- Maputil
- Mathutil
- Netutil
- Pointer
- Random
- Retry
- Slice
- Stream
- Structs
- Strutil
- System
- Tuple
- Validator
- Xerror
1. algorithm 包實現一些基本查詢和排序演算法。 回到目錄
import "github.com/duke-git/lancet/v2/algorithm"
函式列表:
- BubbleSort : 使用氣泡排序演算法對切片進行排序。 [doc] [play]
- CountSort : 使用計數排序演算法對切片進行排序。不改變原資料。 [doc] [play]
- HeapSort : 使用堆排序演算法對切片進行排序。 [doc] [play]
- InsertionSort : 使用插入排序演算法對切片進行排序。 [doc] [play]
- MergeSort : 使用合併排序演算法對切片進行排序。 [doc] [play]
- QuickSort : 使用快速排序演算法對切片進行排序。 [doc] [play]
- SelectionSort : 使用選擇排序演算法對切片進行排序。 [doc] [play]
- ShellSort : 使用希爾排序演算法對切片進行排序。 [doc] [play]
- BinarySearch : 返回排序切片中目標值的索引,使用二分搜尋(遞迴呼叫)。 [doc] [play]
- BinaryIterativeSearch :返回排序切片中目標值的索引,使用二分搜尋(非遞迴)。 [doc] [play]
- LinearSearch : 基於傳入的相等函式返回切片中目標值的索引。(線性查詢) [doc] [play]
- LRUCache : 應用 lru 演算法實現記憶體快取. [doc] [play]
2. compare 包提供幾個輕量級的型別比較函式。 回到目錄
import "github.com/duke-git/lancet/v2/compare"
函式列表:
- Equal : 檢查兩個值是否相等(檢查型別和值)。 [doc] [play]
- EqualValue : 檢查兩個值是否相等(只檢查值)。 [doc] [play]
- LessThan : 驗證引數
left
的值是否小於引數right
的值。 [doc] [play] - GreaterThan : 驗證引數
left
的值是否大於引數right
的值。 [doc] [play] - LessOrEqual : 驗證引數
left
的值是否小於或等於引數right
的值。 [doc] [play] - GreaterOrEqual : 驗證引數
left
的值是否大於或等於引數right
的值。 [doc] [play] - InDelta : 檢查增量內兩個值是否相等。 [doc]
3. concurrency 包含一些支援併發程式設計的功能。例如:goroutine, channel, async 等。 回到目錄
import "github.com/duke-git/lancet/v2/concurrency"
函式列表:
- NewChannel : 返回一個 Channel 指標例項。 [doc] [play]
- Bridge : 將多個 channel 連結到一個 channel,直到取消上下文。 [doc] [play]
- FanIn : 將多個 channel 合併為一個 channel,直到取消上下文。 [doc] [play]
- Generate : 根據傳入的值,生成 channel。 [doc] [play]
- Or : 將一個或多個 channel 讀取到一個 channel 中,當任何讀取 channel 關閉時將結束讀取。 [doc] [play]
- OrDone : 將一個 channel 讀入另一個 channel,直到取消上下文。 [doc] [play]
- Repeat : 返回一個 channel,將引數
values
重複放入 channel,直到取消上下文。 [doc] [play] - RepeatFn : 返回一個 channel,重複執行函式 fn,並將結果放入返回的 channel,直到取消上下文。 [doc] [play]
- Take : 返回一個 channel,其值從另一個 channel 獲取,直到取消上下文。 [doc] [play]
- Tee : 將一個 channel 分成兩個 channel,直到取消上下文。 [doc] [play]
4. condition 包含一些用於條件判斷的函式。 回到目錄
import "github.com/duke-git/lancet/v2/condition"
函式列表:
- Bool : 返回傳入引數的 bool 值。 [doc] [play]
- And : 邏輯且操作,當切僅當 a 和 b 都為 true 時返回 true。 [doc] [play]
- Or : 邏輯或操作,當切僅當 a 和 b 都為 false 時返回 false。 [doc] [play]
- Xor : 邏輯異或操作,a 和 b 相同返回 false,a 和 b 不相同返回 true [doc] [play]
- Nor : 異或的取反操作。 [doc] [play]
- Xnor : 如果 a 和 b 都是真的或 a 和 b 均是假的,則返回 true。 [doc] [play]
- Nand : 如果 a 和 b 都為真,返回 false,否則返回 true [doc] [play]
- TernaryOperator : 三元運算子。 [doc] [play]
5. convertor 轉換器包支援一些常見的資料型別轉換。 回到目錄
import "github.com/duke-git/lancet/v2/convertor"
函式列表:
- ColorHexToRGB : 顏色值十六進位制轉 rgb。 [doc] [play]
- ColorRGBToHex : 顏色值 rgb 轉十六進位制。 [doc] [play]
- ToBool : 字串轉布林型別,使用 strconv.ParseBool。 [doc] [play]
- ToBytes : interface 轉位元組切片。 [doc] [play]
- ToChar : 字串轉字元切片。 [doc] [play]
- ToChannel : 將切片轉為只讀 channel。 [doc] [play]
- ToFloat : 將 interface 轉成 float64 型別,如果引數無法轉換,會返回 0.0 和 error。 [doc] [play]
- ToInt : 將 interface 轉成 int64 型別,如果引數無法轉換,會返回 0 和 error。 [doc] [play]
- ToJson : 將 interface 轉成 json 字串,如果引數無法轉換,會返回""和 error。 [doc] [play]
- ToMap : 將切片轉為 map。 [doc] [play]
- ToPointer : 返回傳入值的指標。 [doc] [play]
- ToString : 將值轉換為字串,對於數字、字串、[]byte,將轉換為字串。 對於其他型別(切片、對映、陣列、結構)將呼叫 json.Marshal。 [doc] [play]
- StructToMap : 將 struct 轉成 map,只會轉換 struct 中可匯出的欄位。 [doc] [play]
- MapToSlice : map 中 key 和 value 執行函式 iteratee 後,轉為切片。 [doc] [play]
- EncodeByte : 將傳入的 data 編碼成位元組切片。 [doc] [play]
- DecodeByte : 解碼位元組切片到目標物件,目標物件需要傳入一個指標例項。 [doc] [play]
- DeepClone : 建立一個傳入值的深複製, 無法克隆結構體的非匯出欄位。 [doc] [play]
- CopyProperties : 複製不同結構體之間的同名欄位。 [doc] [play]
- ToInterface : 將反射值轉換成對應的 interface 型別。 [doc] [play]
- Utf8ToGbk : utf8 編碼轉 GBK 編碼。 [doc] [play]
- GbkToUtf8 : GBK 編碼轉 utf8 編碼。 [doc] [play]
- ToStdBase64 : 將值轉換為StdBase64編碼的字串。 [doc]
- ToUrlBase64 : 將值轉換為url Base64編碼的字串。 [doc]
- ToRawStdBase64 : 將值轉換為RawStdBase64編碼的字串。 [doc]
- ToRawUrlBase64 : 將值轉換為RawUrlBase64編碼的字串。 [doc]
6. cryptor 加密包支援資料加密和解密,獲取 md5,hash 值。支援 base64, md5, hmac, aes, des, rsa。 回到目錄
import "github.com/duke-git/lancet/v2/cryptor"
函式列表:
- AesEcbEncrypt : 使用 AES ECB 演算法模式加密資料。 [doc] [play]
- AesEcbDecrypt : 使用 AES ECB 演算法模解密資料。 [doc] [play]
- AesCbcEncrypt : 使用 AES CBC 演算法模式加密資料。 [doc] [play]
- AesCbcDecrypt : 使用 AES CBC 演算法模式解密資料。 [doc] [play]
- AesCtrCrypt : 使用 AES CTR 演算法模式加密/解密資料。 [doc] [play]
- AesCfbEncrypt : 使用 AES CFB 演算法模式加密資料。 [doc] [play]
- AesCfbDecrypt : 使用 AES CFB 演算法模式解密資料。 [doc] [play]
- AesOfbEncrypt : 使用 AES OFB 演算法模式加密資料。 [doc] [play]
- AesOfbDecrypt : 使用 AES OFB 演算法模式解密資料。 [doc] [play]
- Base64StdEncode : 將字串 base64 編碼。 [doc] [play]
- Base64StdDecode : 解碼 base64 字串。 [doc] [play]
- DesEcbEncrypt : 使用 DES ECB 演算法模式加密資料。 [doc] [play]
- DesEcbDecrypt : 使用 DES ECB 演算法模解密資料。 [doc] [play]
- DesCbcEncrypt : 使用 DES CBC 演算法模式加密資料。 [doc] [play]
- DesCbcDecrypt : 使用 DES CBC 演算法模式解密資料。 [doc] [play]
- DesCtrCrypt : 使用 DES CTR 演算法模式加密/解密資料。 [doc] [play]
- DesCfbEncrypt : 使用 DES CFB 演算法模式加密資料。 [doc] [play]
- DesCfbDecrypt : 使用 DES CFB 演算法模式解密資料。 [doc] [play]
- DesOfbEncrypt : 使用 DES OFB 演算法模式加密資料。 [doc] [play]
- DesOfbDecrypt : 使用 DES OFB 演算法模式解密資料。 [doc] [play]
- HmacMd5 : 返回字串 md5 hmac 值。 [doc] [play]
- HmacMd5WithBase64 : 獲取字串 md5 hmac base64 字串值。 [doc] [doc]
- HmacSha1 : 返回字串 sha1 hmac 值。 [doc] [play]
- HmacSha1WithBase64 : 獲取字串的 sha1 base64 值。 [doc] [play]
- HmacSha256 : 返回字串 sha256 hmac 值。 [doc] [play]
- HmacSha256WithBase64 : 獲取字串 sha256 hmac base64 值。 [doc] [play]
- HmacSha512 : 返回字串 sha256 hmac 值。 [doc] [play]
- HmacSha512WithBase64 : 獲取字串 sha512 hmac base64 值。 [doc] [play]
- Md5Byte : 返回 byte slice 的 md5 值. [doc] [play]
- Md5ByteWithBase64 : 獲取 byte slice 的 md5 base64 值。 [doc] [play]
- Md5String : 返回字串 md5 值。 [doc] [play]
- Md5StringWithBase64 : 獲取字串 md5 base64 值。 [doc] [play]
- Md5File : 返回檔案 md5 值。 [doc]
- Sha1 : 返回字串 sha1 雜湊值。 [doc] [play]
- Sha1WithBase64 : 獲取字串 sha1 base64 值。 [doc] [play]
- Sha256 :返回字串 sha256 雜湊值。 [doc] [play]
- Sha256WithBase64 : 獲取字串 sha256 base64 值。 [doc] [play]
- Sha512 : 返回字串 sha512 雜湊值。 [doc] [play]
- Sha512WithBase64 : 獲取字串 sha512 base64 值。 [doc] [play]
- GenerateRsaKey : 在當前目錄下建立 rsa 私鑰檔案和公鑰檔案。 [doc] [play]
- RsaEncrypt : 用公鑰檔案 ras 加密資料。 [doc] [play]
- RsaDecrypt : 用私鑰檔案 rsa 解密資料。 [doc] [play]
- GenerateRsaKeyPair : 建立rsa公鑰私鑰和key。 [doc] [play]
- RsaEncryptOAEP : rsa OAEP加密。 [doc] [play]
- RsaDecryptOAEP : rsa OAEP解密。 [doc] [play]
7. datetime 日期時間處理包,格式化日期,比較日期。 回到目錄
import "github.com/duke-git/lancet/v2/datetime"
函式列表:
- AddDay : 將日期加/減天數。 [doc] [play]
- AddHour : 將日期加/減小時數。 [doc] [play]
- AddMinute : 將日期加/減分鐘數。 [doc] [play]
- AddYear : 將日期加/減分年數。 [doc] [play]
- BeginOfMinute : 返回指定時間的分鐘開始時間。 [doc] [play]
- BeginOfHour : 返回指定時間的小時開始時間。 [doc] [play]
- BeginOfDay : 返回指定時間的當天開始時間。 [doc] [play]
- BeginOfWeek : 返回指定時間的每週開始時間,預設開始時間星期日。 [doc] [play]
- BeginOfMonth : 返回指定時間的當月開始時間。 [doc] [play]
- BeginOfYear : 返回指定時間的當年開始時間。 [doc] [play]
- EndOfMinute : 返回指定時間的分鐘結束時間。 [doc] [play]
- EndOfHour : 返回指定時間的小時結束時間。 [doc] [play]
- EndOfDay : 返回指定時間的當天結束時間。 [doc] [play]
- EndOfWeek : 返回指定時間的星期結束時間,預設結束時間星期六。 [doc] [play]
- EndOfMonth : 返回指定時間的月份結束時間。 [doc] [play]
- EndOfYear : 返回指定時間的年份結束時間。 [doc] [play]
- GetNowDate : 獲取當天日期,返回格式:yyyy-mm-dd。 [doc] [play]
- GetNowTime : 獲取當時時間,返回格式:hh:mm:ss。 [doc] [play]
- GetNowDateTime : 獲取當時日期和時間,返回格式:yyyy-mm-dd hh:mm:ss。 [doc] [play]
- GetTodayStartTime : 返回當天開始時間, 格式: yyyy-mm-dd 00:00:00。 [doc] [play]
- GetTodayEndTime : 返回當天結束時間,格式: yyyy-mm-dd 23:59:59。 [doc] [play]
- GetZeroHourTimestamp : 獲取零時時間戳(timestamp of 00:00)。 [doc] [play]
- GetNightTimestamp : 獲取午夜時間戳(timestamp of 23:59)。 [doc] [play]
- FormatTimeToStr : 將日期格式化成字串。 [doc] [play]
- FormatStrToTime : 將字串格式化成時間。 [doc] [play]
- NewUnix : 建立一個 unix 時間戳。 [doc] [play]
- NewUnixNow : 建立一個當前時間的 unix 時間戳。 [doc] [play]
- NewFormat : 建立一個 yyyy-mm-dd hh:mm:ss 格式時間字串的 unix 時間戳。 [doc] [play]
- NewISO8601 : 建立一個 iso8601 格式時間字串的 unix 時間戳。 [doc] [play]
- ToUnix : 返回 unix 時間戳。 [doc] [play]
- ToFormat : 返回格式'yyyy-mm-dd hh:mm:ss'的日期字串。 [doc] [play]
- ToFormatForTpl : 返回 tpl 格式指定的日期字串。 [doc] [play]
- ToIso8601 : 返回 iso8601 日期字串。 [doc] [play]
- IsLeapYear :驗證是否是閏年。 [doc] [play]
- BetweenSeconds : 返回兩個時間的間隔秒數。 [doc] [doc]
- DayOfYear : 返回引數日期是一年中的第幾天。 [doc] [play]
- IsWeekend : 判斷日期是否是週末。 [doc] [play]
- NowDateOrTime : 根據指定的格式和時區返回當前時間字串。 [doc] [play]
- Timestamp : 返回當前秒級時間戳。 [doc] [play]
- TimestampMilli : 返回當前毫秒級時間戳。 [doc] [play]
- TimestampMicro : 返回當前微秒級時間戳。 [doc] [play]
- TimestampNano : 返回當前納秒級時間戳。 [doc] [play]
8. datastructure 包含一些普通的資料結構實現。例如:list, linklist, stack, queue, set, tree, graph。 回到目錄
import list "github.com/duke-git/lancet/v2/datastructure/list"
import copyonwritelist "github.com/duke-git/lancet/v2/datastructure/copyonwritelist"
import link "github.com/duke-git/lancet/v2/datastructure/link"
import stack "github.com/duke-git/lancet/v2/datastructure/stack"
import queue "github.com/duke-git/lancet/v2/datastructure/queue"
import set "github.com/duke-git/lancet/v2/datastructure/set"
import tree "github.com/duke-git/lancet/v2/datastructure/tree"
import heap "github.com/duke-git/lancet/v2/datastructure/heap"
import hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap"
函式列表:
- List : 線性表結構, 用切片實現。 [doc]
- CopyOnWriteList : 是一個執行緒安全的 List 實現,底層使用 go 切片。 [doc]
- Link : 連結串列解構, 包括單連結串列和雙向連結串列。 [doc]
- Stack : 棧結構(fifo), 包括陣列棧和連結串列棧。 [doc]
- Queue : 佇列結構(filo), 包括陣列佇列,連結串列佇列,迴圈佇列,優先順序佇列。 [doc]
- Set : 集合(set)結構。 [doc]
- Tree : 二叉搜尋樹。 [doc]
- Heap : 二叉 max 堆。 [doc]
- Hashmap : 雜湊對映。 [doc]
9. fileutil 包含檔案基本操作。 回到目錄
import "github.com/duke-git/lancet/v2/fileutil"
函式列表:
- ClearFile : 清空檔案內容。 [doc] [play]
- CreateFile : 建立檔案,建立成功返回 true, 否則返回 false。 [doc] [play]
- CreateDir : 建立巢狀目錄,例如/a/, /a/b/。 [doc] [play]
- CopyFile : 複製檔案,會覆蓋原有的檔案。 [doc] [play]
- CopyDir : 複製目錄。 [doc] [play]
- FileMode : 獲取檔案 mode 資訊。 [doc] [play]
- MiMeType : 獲取檔案 mime 型別, 引數的型別必須是 string 或者*os.File。 [doc] [play]
- IsExist : 判斷檔案或目錄是否存在。 [doc] [play]
- IsLink : 判斷檔案是否是符號連結。 [doc] [play]
- IsDir : 判斷引數是否是目錄。 [doc] [play]
- ListFileNames : 返回目錄下所有檔名。 [doc] [play]
- RemoveFile : 刪除檔案。 [doc] [play]
- ReadFileToString : 讀取檔案內容並返回字串。 [doc] [play]
- ReadFileByLine : 按行讀取檔案內容,返回字串切片包含每一行。 [doc] [play]
- Zip : zip 壓縮檔案, 引數可以是檔案或目錄。 [doc] [play]
- ZipAppendEntry : 透過將單個檔案或目錄追加到現有的 zip 檔案。 [doc]
- UnZip : zip 解壓縮檔案並儲存在目錄中。 [doc] [play]
- CurrentPath : 返回當前位置的絕對路徑。 [doc] [play]
- IsZipFile : 判斷檔案是否是 zip 壓縮檔案。 [doc] [play]
- FileSize : 返回檔案位元組大小。 [doc] [play]
- MTime : 返回檔案修改時間(unix timestamp)。 [doc] [play]
- Sha : 返回檔案 sha 值。 [doc] [play]
- ReadCsvFile : 讀取 csv 檔案內容到切片。 [doc] [play]
- WriteCsvFile : 向csv檔案寫入切片資料。 [doc]
- WriteMapsToCsv : 將map切片寫入csv檔案中。 [doc] [play]
- WriteBytesToFile : 將 bytes 寫入檔案。 [doc] [play]
- WriteStringToFile : 將字串寫入檔案。 [doc] [play]
- ReadFile : 讀取檔案或者URL。 [doc]
- ChunkRead : 從檔案的指定偏移讀取塊並返回塊內所有行。 [doc] [play]
- ParallelChunkRead : 並行讀取檔案並將每個塊的行傳送到指定通道。 [doc] [play]
10. formatter 格式化器包含一些資料格式化處理方法。 回到目錄
import "github.com/duke-git/lancet/v2/formatter"
函式列表:
- Comma : 用逗號每隔 3 位分割數字/字串,支援字首新增符號。 [doc] [play]
- Pretty : 返回 pretty JSON 字串。 [doc] [play]
- PrettyToWriter : Pretty encode 資料到 writer。 [doc] [play]
- DecimalBytes : 返回十進位制標準(以 1000 為基數)下的可讀位元組單位字串。precision 引數指定小數點後的位數,預設為 4。 [doc] [play]
- BinaryBytes : 返回 binary 標準(以 1024 為基數)下的可讀位元組單位字串。precision 引數指定小數點後的位數,預設為 4。 [doc] [play]
- ParseDecimalBytes : 將位元組單位字串轉換成其所表示的位元組數(以 1000 為基數)。 [doc] [play]
- ParseBinaryBytes : 將位元組單位字串轉換成其所表示的位元組數(以 1024 為基數)。 [doc] [play]
11. function 函式包控制函式執行流程,包含部分函數語言程式設計。 回到目錄
import "github.com/duke-git/lancet/v2/function"
函式列表:
- After : 建立一個函式,當該函式被呼叫 n 或更多次之後將執行傳入的函式。 [doc] [play]
- Before : 建立一個函式,當該函式被呼叫不超過 n 次時,將執行執行傳入的函式。 [doc] [play]
- CurryFn : 建立柯里化函式。 [doc] [play]
- Compose : 從右至左組合函式列表 fnList,返回組合後的函式。 [doc] [play]
- Delay : 延遲 delay 時間後呼叫函式。 [doc] [play]
- Debounced : 建立一個 debounced 函式,該函式延遲呼叫 fn 直到自上次呼叫 debounced 函式後等待持續時間過去。 [doc] [play]
- Schedule : 每次持續時間呼叫函式,直到關閉返回的 channel。 [doc] [play]
- Pipeline : 從右至左執行函式列表。 [doc] [play]
- AcceptIf : AcceptIf函式會返回另一個函式,該函式的簽名與apply函式相同,但同時還會包含一個布林值來表示成功或失敗。 [doc] [play]
- And : 返回一個複合謂詞判斷函式,該判斷函式表示一組謂詞的邏輯and操作。 [doc] [play]
- Or : 返回一個複合謂詞判斷函式,該判斷函式表示一組謂詞的邏輯or操作。 [doc] [play]
- Negate : 返回一個謂詞函式,該謂詞函式表示當前謂詞的邏輯否定。 [doc] [play]
- Nor : 返回一個複合謂詞判斷函式,該判斷函式表示一組謂詞的邏輯非或nor的操作。 [doc] [play]
- Nand : 返回一個複合謂詞判斷函式,該判斷函式表示一組謂詞的邏輯非與nand的操作。 [doc] [play]
- Xnor : 返回一個複合謂詞判斷函式,該判斷函式表示一組謂詞的邏輯異或xnor的操作。 [doc] [play]
- Watcher : Watcher 用於記錄程式碼執行時間。可以啟動/停止/重置手錶定時器。獲取函式執行的時間。 [doc] [play]
12. maputil 包括一些操作 map 的函式。 回到目錄
import "github.com/duke-git/lancet/v2/maputil"
函式列表:
- MapTo : 快速將 map 或者其他型別對映到結構體或者指定型別。 [doc] [play]
- ForEach : 對 map 中的每對 key 和 value 執行 iteratee 函式。 [doc] [play]
- Filter : 迭代 map 中的每對 key 和 value,返回 map,其中的 key 和 value 符合 predicate 函式。 [doc] [play]
- FilterByKeys : 迭代 map, 返回一個新 map,其 key 都是給定的 key 值。 [doc] [play]
- FilterByValues : 迭代 map, 返回一個新 map,其 value 都是給定的 value 值。 [doc] [play]
- OmitBy : Filter 的反向操作, 迭代 map 中的每對 key 和 value, 刪除符合 predicate 函式的 key, value, 返回新 map。 [doc] [play]
- OmitByKeys : FilterByKeys 的反向操作, 迭代 map, 返回一個新 map,其 key 不包括給定的 key 值。 [doc] [play]
- OmitByValues : FilterByValues 的反向操作, 迭代 map, 返回一個新 map,其 value 不包括給定的 value 值。 [doc] [play]
- Intersect : 多個 map 的交集操作。 [doc] [play]
- Keys : 返回 map 中所有 key 組成的切片。 [doc] [play]
- KeysBy : 建立一個切片,其元素是每個 map 的 key 呼叫 mapper 函式的結果。 [doc] [play]
- Merge : 合併多個 map, 相同的 key 會被之後的 key 覆蓋。 [doc] [play]
- Minus : 返回一個 map,其中的 key 存在於 mapA,不存在於 mapB。 [doc] [play]
- Values : 返回 map 中所有 values 組成的切片 [doc] [play]
- ValuesBy : 建立一個切片,其元素是每個 map 的 value 呼叫 mapper 函式的結果。 [doc] [play]
- MapKeys : 操作 map 的每個 key,然後轉為新的 map。 [doc] [play]
- MapValues : 操作 map 的每個 value,然後轉為新的 map。 [doc] [play]
- Entries : 將 map 轉換為鍵/值對切片。 [doc] [play]
- FromEntries : 基於鍵/值對的切片建立 map。 [doc] [play]
- Transform : 將 map 轉換為其他型別的 map。 [doc] [play]
- IsDisjoint : 驗證兩個 map 是否具有不同的 key。 [doc] [play]
- HasKey : 檢查 map 是否包含某個 key。 [doc] [play]
- GetOrSet : 返回給定鍵的值,如果不存在則設定該值。 [doc] [play]
- MapToStruct : 將map轉成struct。 [doc] [play]
- ToSortedSlicesDefault : 將map的key和value轉化成兩個根據key的值從小到大排序的切片,value切片中元素的位置與key對應。 [doc] [play]
- ToSortedSlicesWithComparator : 將map的key和value轉化成兩個使用比較器函式根據key的值自定義排序規則的切片,value切片中元素的位置與key對應。 [doc] [play]
- NewConcurrentMap : ConcurrentMap 協程安全的 map 結構。 [doc] [play]
- ConcurrentMap_Set : 在 map 中設定 key 和 value。 [doc] [play]
- ConcurrentMap_Get : 根據 key 獲取 value, 如果不存在 key,返回零值。 [doc] [play]
- ConcurrentMap_GetOrSet : 返回鍵的現有值(如果存在),否則,設定 key 並返回給定值。 [doc] [play]
- ConcurrentMap_Delete : 刪除 key。 [doc] [play]
- ConcurrentMap_GetAndDelete :獲取 key,然後刪除。 [doc] [play]
- ConcurrentMap_Has : 驗證是否包含 key。 [doc] [play]
- ConcurrentMap_Range : 為 map 中每個鍵和值順序呼叫迭代器。 如果 iterator 返回 false,則停止迭代。 [doc] [play]
13. mathutil 包實現了一些數學計算的函式。 回到目錄
import "github.com/duke-git/lancet/v2/mathutil"
函式列表:
- Average :計算平均數,可能需要對結果呼叫 RoundToFloat 方法四捨五入。 [doc] [play]
- Exponent : 指數計算(x 的 n 次方)。 [doc] [play]
- Fibonacci :計算斐波那契數列的第 n 個數。 [doc] [play]
- Factorial : 計算階乘。 [doc] [play]
- Max : 返回引數中的最大數。 [doc] [play]
- MaxBy : 使用給定的比較器函式返回切片的最大值。 [doc] [play]
- Min : 返回引數中的最小數。 [doc] [play]
- MinBy : 使用給定的比較器函式返回切片的最小值。 [doc] [play]
- Percent : 計算百分比,可以指定保留 n 位小數。 [doc] [play]
- RoundToFloat : 四捨五入,保留 n 位小數,返回 float64。 [doc] [play]
- RoundToString : 四捨五入,保留 n 位小數,返回 string。 [doc] [play]
- TruncRound : 截短 n 位小數(不進行四捨五入)。 [doc] [play]
- CeilToFloat : 向上舍入(進一法),保留n位小數。 [doc] [play]
- CeilToString : 向上舍入(進一法),保留n位小數,返回字串。 [doc] [play]
- FloorToFloat : 向下舍入(去尾法),保留n位小數。 [doc] [play]
- FloorToString : 向下舍入(去尾法),保留n位小數,返回字串。 [doc] [play]
- Range : 根據指定的起始值和數量,建立一個數字切片。 [doc] [play]
- RangeWithStep : 根據指定的起始值,結束值,步長,建立一個數字切片。 [doc] [play]
- AngleToRadian : 將角度值轉為弧度值。 [doc] [play]
- RadianToAngle : 將弧度值轉為角度值。 [doc] [play]
- PointDistance : 計算兩個座標點的距離。 [doc] [play]
- IsPrime : 判斷質數。 [doc] [play]
- GCD : 求最大公約數。 [doc] [play]
- LCM : 求最小公倍數。 [doc] [play]
- Cos : 計算弧度的餘弦值。 [doc] [play]
- Sin : 計算弧度的正弦值。 [doc] [play]
- Log : 計算以 base 為底 n 的對數。 [doc] [play]
- Sum : 求傳入引數之和。 [doc] [play]
- Abs : 求絕對值。 [doc] [play]
- Div : 除法運算。 [doc] [play]
14. netutil 網路包支援獲取 ip 地址,傳送 http 請求。 回到目錄
import "github.com/duke-git/lancet/v2/netutil"
函式列表:
- ConvertMapToQueryString : 將 map 轉換成 http 查詢字串。 [doc] [play]
- EncodeUrl : 編碼 url query string 的值(?a=1&b=[2] -> ?a=1&b=%5B2%5D)。 [doc] [play]
- GetInternalIp : 獲取內部 ipv4。 [doc] [play]
- GetIps : 獲取系統 ipv4 地址列表。 [doc] [play]
- GetMacAddrs : 獲取系統 mac 地址列。 [doc] [play]
- GetPublicIpInfo : 獲取公網 ip 資訊. [doc] [play]
- GetRequestPublicIp : 獲取 http 請求 ip。 [doc] [play]
- IsPublicIP : 判斷 ip 是否是公共 ip。 [doc] [play]
- IsInternalIP : 判斷 ip 是否是區域網 ip。 [doc] [play]
- HttpRequest : 用於抽象 HTTP 請求實體的結構。 [doc] [play]
- HttpClient : 用於傳送 HTTP 請求。 [doc] [play]
- SendRequest : 傳送 http 請求。 [doc] [play]
- DecodeResponse : 解析 http 響應體到目標結構體。 [doc] [play]
- StructToUrlValues : 將結構體轉為 url values, 僅轉化結構體匯出欄位並且包含
json
tag。 [doc] [play] - HttpGetdeprecated : 傳送 http get 請求(已棄用:SendRequest 代替)。 [doc]
- HttpDeletedeprecated : 傳送 http delete 請求(已棄用:SendRequest 代替)。 [doc]
- HttpPostdeprecated : 傳送 http post 請求(已棄用:SendRequest 代替)。 [doc]
- HttpPutdeprecated : 傳送 http put 請求(已棄用:SendRequest 代替)。 [doc]
- HttpPatchdeprecated : 傳送 http patch 請求(已棄用:SendRequest 代替)。 [doc]
- ParseHttpResponse : 解析 http 響應體到目標結構體。 [doc]
- DownloadFile : 從指定的 server 地址下載檔案。 [doc]
- UploadFile : 將檔案上傳指定的 server 地址。 [doc]
- IsPingConnected : 檢查能否 ping 通主機。 [doc] [play]
- IsTelnetConnected : 檢查能否 telnet 到主機。 [doc] [play]
15. pointer 包支援一些指標型別的操作。 回到目錄
import "github.com/duke-git/lancet/v2/pointer"
函式列表:
- ExtractPointer : 返回傳入 interface 的底層值。 [doc] [play]
- Of : 返回傳入引數的指標值。 [doc] [play]
- Unwrap : 返回傳入指標指向的值。 [doc] [play
- UnwarpOr : 返回指標的值,如果指標為零值,則返回 fallback。 [doc] [play]
- UnwarpOrDefault : 返回指標的值,如果指標為零值,則返回相應零值。 [doc] [play]
16. random 隨機數生成器包,可以生成隨機[]bytes, int, string。 回到目錄
import "github.com/duke-git/lancet/v2/random"
函式列表:
- RandBytes : 生成隨機位元組切片。 [doc] [play]
- RandInt : 生成隨機 int, 範圍[min, max)。 [doc] [play]
- RandString : 生成給定長度的隨機字串,只包含字母(a-zA-Z)。 [doc] [play]
- RandUpper : 生成給定長度的隨機大寫字母字串(A-Z)。 [doc] [play]
- RandLower : 生成給定長度的隨機小寫字母字串(a-z)。 [doc] [play]
- RandNumeral : 生成給定長度的隨機數字字串(0-9)。 [doc] [play]
- RandNumeralOrLetter : 生成給定長度的隨機字串(數字+字母)。 [doc] [play]
- UUIdV4 : 生成 UUID v4 字串。 [doc] [play]
- RandUniqueIntSlice : 生成一個不重複的長度為 n 的隨機 int 切片。 [doc] [play]
- RandSymbolChar : 生成給定長度的隨機符號字串。 [doc] [play]
- RandFloat : 生成隨機float64數字,可以指定範圍和精度。 [doc] [play]
- RandFloats : 生成隨機float64數字切片,可以指定長度,範圍和精度. [doc] [play]
17. retry 重試執行函式直到函式執行成功或被 context cancel。 回到目錄
import "github.com/duke-git/lancet/v2/retry"
函式列表:
- Context : 設定重試 context 引數。 [doc] [play]
- Retry : 重試執行函式 retryFunc,直到函式執行成功,或被 context 取消。 [doc] [play]
- RetryFunc : 重試執行的函式。 [doc] [play]
- RetryDuration : 設定重試間隔時間,預設 3 秒。 [doc] [play]
- RetryTimes : 設定重試次數,預設 5。 [doc] [play]
- BackoffStrategy : 定義計算退避間隔的方法的介面。 [doc]
- RetryWithCustomBackoff : 設定自定義退避策略。 [doc] [play]
- RetryWithLinearBackoff : 設定線性策略退避。 [doc] [play]
- RetryWithExponentialWithJitterBackoff : 設定指數策略退避。 [doc] [play]
18. slice 包含操作切片的方法集合。 回到目錄
import "github.com/duke-git/lancet/v2/slice"
函式列表:
- AppendIfAbsent : 當前切片中不包含值時,將該值追加到切片中。 [doc] [play]
- Contain : 判斷 slice 是否包含 value。 [doc] [play]
- ContainBy : 根據 predicate 函式判斷切片是否包含某個值。 [doc] [play]
- ContainSubSlice : 判斷 slice 是否包含 subslice。 [doc] [play]
- Chunk : 按照 size 引數均分 slice。 [doc] [play]
- Compact : 去除 slice 中的假值(false values are false, nil, 0, "")。 [doc] [play]
- Concat : 合併多個 slices 到一個 slice 中。 [doc] [play]
- Count : 返回切片中指定元素的個數。 [doc] [play]
- CountBy : 遍歷切片,對每個元素執行函式 predicate. 返回符合函式返回值為 true 的元素的個數。 [doc] [play]
- Difference : 建立一個切片,其元素不包含在另一個給定切片中。 [doc] [play]
- DifferenceBy : 將兩個 slice 中的每個元素呼叫 iteratee 函式,並比較它們的返回值,如果不相等返回在 slice 中對應的值。 [doc] [play]
- DifferenceWith : 接受比較器函式,該比較器被呼叫以將切片的元素與值進行比較。 結果值的順序和引用由第一個切片確定。 [doc] [play]
- DeleteAt : 刪除切片中指定索引到的元素。 [doc] [play]
- DeleteRange : 刪除切片中指定開始索引到結束索引的元素。 [doc] [play]
- Drop : 從切片頭部刪除 n 個元素。 [doc] [play]
- DropRight : 從切片尾部刪除 n 個元素。 [doc] [play]
- DropWhile : 從切片的頭部刪除 n 個元素,這個 n 個元素滿足 predicate 函式返回 true。 [doc] [play]
- DropRightWhile : 從切片的尾部刪除 n 個元素,這個 n 個元素滿足 predicate 函式返回 true。 [doc] [play]
- Equal : 檢查兩個切片是否相等,相等條件:切片長度相同,元素順序和值都相同。 [doc] [play]
- EqualWith : 檢查兩個切片是否相等,相等條件:對兩個切片的元素呼叫比較函式 comparator,返回 true。 [doc] [play]
- Every : 如果切片中的所有值都透過謂詞函式,則返回 true。 [doc] [play]
- Filter : 返回切片中透過 predicate 函式真值測試的所有元素。 [doc] [play]
- FilterMap : 返回一個將 filter 和 map 操作應用於給定切片的切片。 [doc] [play]
- Finddeprecated : 遍歷切片的元素,返回第一個透過 predicate 函式真值測試的元素。 [doc] [play]
- FindBy : 遍歷切片的元素,返回第一個透過 predicate 函式真值測試的元素。 [doc] [play]
- FindLastdeprecated : 從頭到尾遍歷 slice 的元素,返回最後一個透過 predicate 函式真值測試的元素。 [doc] [play]
- FindLastBy : 從遍歷 slice 的元素,返回最後一個透過 predicate 函式真值測試的元素。 [doc] [play]
- Flatten : 將多維切片展平一層。 [doc] [play]
- FlattenDeep : 將多維切片遞迴展平到一層。 [doc] [play]
- FlatMap : 將切片轉換為其它型別切片。 [doc] [play]
- ForEach : 遍歷切片的元素併為每個元素呼叫 iteratee 函式。 [doc] [play]
- ForEachWithBreak : 遍歷切片的元素併為每個元素呼叫 iteratee 函式,當 iteratee 函式返回 false 時,終止遍歷。 [doc] [play]
- GroupBy : 迭代切片的元素,每個元素將按條件分組,返回兩個切片。 [doc] [play]
- GroupWith : 建立一個 map,key 是 iteratee 遍歷 slice 中的每個元素返回的結果。值是切片元素。 [doc] [play]
- IntSlicedeprecated : 將介面切片轉換為 int 切片。 [doc] [play]
- InterfaceSlicedeprecated : 將值轉換為 interface 切片。 [doc] [play]
- Intersection : 返回多個切片的交集。 [doc] [play]
- InsertAt : 將元素插入到索引處的切片中。 [doc] [play]
- IndexOf : 返回在切片中找到值的第一個匹配項的索引,如果找不到值,則返回-1。 [doc] [play]
- LastIndexOf : 返回在切片中找到最後一個值的索引,如果找不到該值,則返回-1。 [doc] [play]
- Map : 對 slice 中的每個元素執行 map 函式以建立一個新切片。 [doc] [play]
- Merge : 合併多個切片(不會消除重複元素)。 [doc] [play]
- Reverse : 反轉切片中的元素順序。 [doc] [play]
- Reducedeprecated : 將切片中的元素依次執行 iteratee 函式,返回執行結果。(廢棄:建議使用 ReduceBy) [doc] [play]
- ReduceBy : 對切片元素執行 reduce 操作。 [doc] [play]
- ReduceRight : 類似 ReduceBy 操作,迭代切片元素順序從右至左。 [doc] [play]
- Replace : 返回切片的副本,其中前 n 個不重疊的 old 替換為 new。 [doc] [play]
- ReplaceAll : 返回切片的副本,將其中 old 全部替換為 new。 [doc] [play]
- Repeat : 建立一個切片,包含 n 個傳入的 item。 [doc] [play]
- Shuffle : 隨機打亂切片中的元素順序。 [doc] [play]
- IsAscending : 檢查切片元素是否按升序排列。 [doc] [play]
- IsDescending : 檢查切片元素是否按降序排列。 [doc] [play]
- IsSorted : 檢查切片元素是否是有序的(升序或降序)。 [doc] [play]
- IsSortedByKey : 透過 iteratee 函式,檢查切片元素是否是有序的。 [doc] [play]
- Sort : 對任何有序型別(數字或字串)的切片進行排序,使用快速排序演算法。 [doc] [play]
- SortBy : 按照 less 函式確定的升序規則對切片進行排序。排序不保證穩定性。 [doc] [play]
- SortByFielddeprecated : 按欄位對結構切片進行排序。slice 元素應為 struct,欄位型別應為 int、uint、string 或 bool。 [doc] [play]
- Some : 如果列表中的任何值透過謂詞函式,則返回 true。 [doc] [play]
- StringSlicedeprecated : 將介面切片轉換為字串切片。 [doc] [play]
- SymmetricDifference : 返回一個切片,其中的元素存在於引數切片中,但不同時儲存在於引數切片中(交集取反)。 [doc] [play]
- ToSlice : 將可變引數轉為切片。 [doc] [play]
- ToSlicePointer : 將可變引數轉為指標切片。 [doc] [play]
- Unique : 刪除切片中的重複元素。 [doc] [play]
- UniqueBy : 對切片的每個元素呼叫 iteratee 函式,然後刪除重複元素。 [doc] [play]
- UniqueByField : 根據struct欄位對struct切片去重複。 [doc] [play]
- Union : 合併多個切片。 [doc] [play]
- UnionBy : 對切片的每個元素呼叫函式後,合併多個切片。 [doc] [play]
- UpdateAt : 更新索引處的切片元素。 [doc] [play]
- Without : 建立一個不包括所有給定值的切片。 [doc] [play] [doc] [play]
- Join : 用指定的分隔符連結切片元素。 [doc] [play]
- Partition : 根據給定的predicate判斷函式分組切片元素。 [doc] [play]
- Random : 隨機返回切片中元素以及下標, 當切片長度為0時返回下標-1。 [doc] [play]
- SetToDefaultIf : 根據給定給定的predicate判定函式來修改切片中的元素。 [doc] [play]
- Break : 根據判斷函式將切片分成兩部分。它開始附加到與函式匹配的第一個元素之後的第二個切片。第一個匹配之後的所有元素都包含在第二個切片中,無論它們是否與函式匹配。 [doc]
- RightPadding : 在切片的右部新增元素。 [doc] [play]
- LeftPadding : 在切片的左部新增元素。 [doc] [play]
19. stream 流,該包僅驗證簡單的 stream 實現,功能有限。 回到目錄
import "github.com/duke-git/lancet/v2/stream"
函式列表:
- Of : 建立元素為指定值的 stream。 [doc] [play]
- FromSlice : 從切片建立 stream。 [doc] [play]
- FromChannel : 從通道建立 stream。 [doc] [play]
- FromRange : 指定一個數字範圍建立 stream, 範圍兩端點值都包括在內。. [start, end] [doc] [play]
- Generate : 建立一個 stream,其中每個元素都由提供的生成器函式生成。 [doc] [play]
- Concat : 建立一個延遲連線 stream,其元素是第一個 stream 的所有元素,後跟第二個 stream 的全部元素。 [doc] [play]
- Distinct : 建立並返回一個 stream,用於刪除重複的項。 [doc] [play]
- Filter : 返回一個透過判定函式的 stream。 [doc] [play]
- Map : 返回一個 stream,該 stream 由將給定函式應用於源 stream 元素的元素組成。 [doc] [play]
- Peek : 返回一個由源 stream 的元素組成的 stream,並在從生成的 stream 中消耗元素時對每個元素執行所提供的操作。 [doc] [play]
- Skip : 在丟棄 stream 的前 n 個元素後,返回由源 stream 的其餘元素組成的 stream。如果此 stream 包含的元素少於 n 個,則將返回一個空 stream。 [doc] [play]
- Limit : 返回由源 stream 的元素組成的 stream,該 stream 被截斷為長度不超過 maxSize。 [doc] [play]
- Reverse : 返回元素與源 stream 的順序相反的 stream。 [doc] [play]
- Range : 返回一個 stream,該 stream 的元素在從源 stream 的開始(包含)到結束(排除)的範圍內。 [doc] [play]
- Sorted : 返回一個 stream,該 stream 由源 stream 的元素組成,並根據提供的 less 函式進行排序。 [doc] [play]
- ForEach : 對 stream 的每個元素執行一個操作。 [doc] [play]
- Reduce : 使用關聯累加函式對 stream 的元素執行 reduce 操作,並 reduce 操作結果(如果有)。 [doc] [play]
- FindFirst : 返回此 stream 的第一個元素,如果 stream 為空,則返回零值和 false。 [doc] [play]
- FindLast : 返回此 stream 的最後一個元素,如果 stream 為空,則返回零值和 false。 [doc] [play]
- Max : 根據提供的 less 函式返回 stream 的最大元素。less 函式: a > b [doc] [play]
- Min : 根據提供的 less 函式返回 stream 的最小元素。less 函式: a < b [doc] [play]
- AllMatch : 判斷 stream 的所有元素是否全部匹配指定判定函式。 [doc] [play]
- AnyMatch : 判斷 stream 是否包含匹配指定判定函式的元素。 [doc] [play]
- NoneMatch : 判斷 stream 的元素是否全部不匹配指定的判定函式。 [doc] [play]
- Count : 返回 stream 中元素的數量。 [doc] [play]
- ToSlice : 返回 stream 中的元素切片。 [doc] [play]
20. structs 提供操作 struct, tag, field 的相關函式。 回到目錄
import "github.com/duke-git/lancet/v2/structs"
函式列表:
- New :
Struct
結構體的建構函式。 [doc] - ToMap : 將一個合法的 struct 物件轉換為 map[string]any。 [doc]
- Fields : 獲取一個 struct 物件的屬性列表。 [doc]
- Field : 根據屬性名獲取一個 struct 物件的屬性。 [doc]
- IsStruct : 判斷是否為一個合法的 struct 物件。 [doc]
- Tag : 獲取
Field
的Tag
,預設的 tag key 是 json。 [doc] - Name : 獲取屬性名。 [doc]
- Value : 獲取
Field
屬性的值。 [doc] - Kind : 獲取屬性 Kind。 [doc]
- IsEmbedded : 判斷屬性是否為嵌入。 [doc]
- IsExported : 判斷屬性是否匯出。 [doc]
- IsZero : 判斷屬性是否為零值。 [doc]
- IsSlice : 判斷屬性是否是切片。 [doc]
- IsTargetType : 判斷屬性是否是目標型別。 [doc]
21. strutil 包含字串處理的相關函式。 回到目錄
import "github.com/duke-git/lancet/v2/strutil"
函式列表:
- After : 返回源字串中指定字串首次出現時的位置之後的子字串。 [doc] [play]
- AfterLast : 返回源字串中指定字串最後一次出現時的位置之後的子字串。 [doc] [play]
- Before : 返回源字串中指定字串第一次出現時的位置之前的子字串。 [doc] [play]
- BeforeLast : 返回源字串中指定字串最後一次出現時的位置之前的子字串。 [doc] [play]
- CamelCase : 將字串轉換為 CamelCase 駝峰式字串, 非字母和數字會被忽略。 [doc] [play]
- Capitalize : 將字串的第一個字元轉換為大寫。 [doc] [play]
- ContainsAll : 判斷字串是否包括全部給定的子字串切片。 [doc] [play]
- ContainsAny : 判斷字串是否包括給定的子字串切片中任意一個子字串。 [doc] [play]
- IsString : 判斷傳入引數的資料型別是否為字串。 [doc] [play]
- KebabCase : 將字串轉換為 kebab-case 形式字串, 非字母和數字會被忽略。 [doc] [play]
- UpperKebabCase : 將字串轉換為大寫 KEBAB-CASE 形式字串, 非字母和數字會被忽略。 [doc] [play]
- LowerFirst : 將字串的第一個字元轉換為小寫形式。 [doc] [play]
- UpperFirst : 將字串的第一個字元轉換為大寫形式。 [doc] [play]
- Pad : 如果字串長度短於 size,則在左右兩側填充字串。 [doc] [play]
- PadEnd : 如果字串短於限制大小,則在右側用給定字元填充字串。 如果填充字元超出大小,它們將被截斷。 [doc] [play]
- PadStart : 如果字串短於限制大小,則在左側用給定字元填充字串。 如果填充字元超出大小,它們將被截斷。 [doc] [play]
- Reverse : 返回字元順序與給定字串相反的字串。 [doc] [play]
- SnakeCase : 將字串轉換為 snake_case 形式, 非字母和數字會被忽略。 [doc] [play]
- UpperSnakeCase : 將字串轉換為大寫 SNAKE_CASE 形式, 非字母和數字會被忽略。 [doc] [play]
- SplitEx : 拆分給定的字串可以控制結果切片是否包含空字串。 [doc] [play]
- Substring : 根據指定的位置和長度擷取子字串。 [doc] [play]
- Wrap : 用給定字元包裹傳入的字串 [doc] [play]
- Unwrap : 從另一個字串中解開一個給定的字串。 將更改源字串。 [doc] [play]
- SplitWords : 將字串拆分為單詞,只支援字母字元單詞。 [doc] [play]
- WordCount : 返回有意義單詞的數量,只支援字母字元單詞。 [doc] [play]
- RemoveNonPrintable : 刪除字串中不可列印的字元。 [doc] [play]
- StringToBytes : 在不分配記憶體的情況下將字串轉換為位元組片。 [doc] [play]
- BytesToString : 在不分配記憶體的情況下將位元組切片轉換為字串。 [doc] [play]
- IsBlank : 檢查字串是否為空格或空。 [doc] [play]
- IsNotBlank : 檢查字串是否不為空。 [doc] [play]
- HasPrefixAny : 檢查字串是否以指定字串陣列中的任何一個開頭。 [doc] [play]
- HasSuffixAny : 檢查字串是否以指定字串陣列中的任何一個結尾。 [doc] [play]
- IndexOffset : 將字串偏移 idxFrom 後,返回字串中第一個 substr 例項的索引。 [doc] [play]
- ReplaceWithMap : 返回 string 的副本,以無序的方式被 map 替換,區分大小寫。 [doc] [play]
- Trim : 從字串的開頭和結尾去除空格(或其他字元)。 可選引數 characterMask 指定額外的剝離字元。 [doc] [play]
- SplitAndTrim : 將字串 str 按字串 delimiter 拆分為一個切片,並對該陣列的每個元素呼叫 Trim。忽略 Trim 後為空的元素。 [doc] [play]
- HideString : 隱藏源字串中的一些字元。 [doc] [play]
- RemoveWhiteSpace : 刪除字串中的空格。 [doc] [play]
- SubInBetween : 獲取字串中指定的起始字串start和終止字串end直接的子字串。 [doc] [play]
- HammingDistance : 計算兩個字串之間的漢明距離。 [doc] [play]
22. system 包含 os, runtime, shell command 的相關函式。 回到目錄
import "github.com/duke-git/lancet/v2/system"
函式列表:
- IsWindows : 檢查當前作業系統是否是 windows。 [doc] [play]
- IsLinux : 檢查當前作業系統是否是 linux。 [doc] [play]
- IsMac : 檢查當前作業系統是否是 macos。 [doc] [play]
- GetOsEnv : 根據 key 獲取對應的環境變數值 [doc] [play]
- SetOsEnv : 設定環境變數。 [doc] [play]
- RemoveOsEnv : 刪除環境變數。 [doc] [play]
- CompareOsEnv : 換取環境變數並與傳入值進行比較。 [doc] [play]
- ExecCommand : 執行 shell 命令。 [doc] [play]
- GetOsBits : 獲取當前作業系統位數(32/64)。 [doc] [play]
23. Tuple 包實現一個元組資料型別。 回到目錄
import "github.com/duke-git/lancet/v2/tuple"
函式列表:
- Tuple2 : 2 元元組 [doc] [play]
- Tuple2_Unbox : 返回 2 元元組的欄位值。 [doc] [play]
- Zip2 : 建立一個 Tuple2 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip2 : 根據傳入的 Tuple2 切片,建立一組和 Tuple2 元素相對應的切片。 [doc] [play]
- Tuple3 : 3 元元組 [doc] [play]
- Tuple3_Unbox : 返回 3 元元組的欄位值。 [doc] [play]
- Zip3 : 建立一個 Tuple3 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip3 : 根據傳入的 Tuple3 切片,建立一組和 Tuple3 元素相對應的切片。 [doc] [play]
- Tuple4 : 4 元元組 [doc] [play]
- Tuple4_Unbox : 返回 4 元元組的欄位值。 [doc] [play]
- Zip4 : 建立一個 Tuple4 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip4 : 根據傳入的 Tuple4 切片,建立一組和 Tuple4 元素相對應的切片。 [doc] [play]
- Tuple5 : 5 元元組 [doc] [play]
- Tuple5_Unbox : 返回 5 元元組的欄位值。 [doc] [play]
- Zip5 : 建立一個 Tuple5 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip5 : 根據傳入的 Tuple5 切片,建立一組和 Tuple5 元素相對應的切片。 [doc] [play]
- Tuple6 : 6 元元組 [doc] [play]
- Tuple6_Unbox : 返回 6 元元組的欄位值。 [doc] [play]
- Zip6 : 建立一個 Tuple6 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip6 : 根據傳入的 Tuple6 切片,建立一組和 Tuple6 元素相對應的切片。 [doc] [play]
- Tuple7 : 7 元元組 [doc] [play]
- Tuple7_Unbox : 返回 7 元元組的欄位值。 [doc] [play]
- Zip7 : 建立一個 Tuple7 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip7 : 根據傳入的 Tuple7 切片,建立一組和 Tuple7 元素相對應的切片。 [doc] [play]
- Tuple8 : 8 元元組 [doc] [play]
- Tuple8_Unbox : 返回 8 元元組的欄位值。 [doc] [play]
- Zip8 : 建立一個 Tuple8 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip8 : 根據傳入的 Tuple8 切片,建立一組和 Tuple8 元素相對應的切片。 [doc] [play]
- Tuple9 : 9 元元組 [doc] [play]
- Tuple9_Unbox : 返回 9 元元組的欄位值。 [doc] [play]
- Zip9 : 建立一個 Tuple9 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip9 : 根據傳入的 Tuple9 切片,建立一組和 Tuple9 元素相對應的切片。 [doc] [play]
- Tuple10 : 10 元元組 [doc] [play]
- Tuple10_Unbox : 返回 10 元元組的欄位值。 [doc] [play]
- Zip10 : 建立一個 Tuple10 元組切片, 其中元組的元素和傳入切片元素相對應。 [doc] [play]
- Unzip10 : 根據傳入的 Tuple10 切片,建立一組和 Tuple10 元素相對應的切片。 [doc] [play]
24. validator 驗證器包,包含常用字串格式驗證函式。 回到目錄
import "github.com/duke-git/lancet/v2/validator"
函式列表:
- ContainChinese : 驗證字串是否包含中文字元。 [doc] [play]
- ContainLetter : 驗證字串是否包含至少一個英文字母。 [doc] [play]
- ContainLower : 驗證字串是否包含至少一個英文小寫字母。 [doc] [play]
- ContainUpper : 驗證字串是否包含至少一個英文大寫字母。 [doc] [play]
- IsAlpha : 驗證字串是否只包含英文字母。 [doc] [play]
- IsAllUpper : 驗證字串是否全是大寫英文字母。 [doc] [play]
- IsAllLower : 驗證字串是否全是小寫英文字母。 [doc] [play]
- IsBase64 : 驗證字串是否是 base64 編碼。 [doc] [play]
- IsChineseMobile : 驗證字串是否是中國手機號碼。 [doc] [play]
- IsChineseIdNum : 驗證字串是否是中國身份證號碼。 [doc] [play]
- IsChinesePhone : 驗證字串是否是中國電話座機號碼(xxx-xxxxxxxx or xxxx-xxxxxxx.)。 [doc] [play]
- IsCreditCard : 驗證字串是否是信用卡號碼。 [doc] [play]
- IsDns : 驗證字串是否是有效 dns。 [doc] [play]
- IsEmail : 驗證字串是否是有效電子郵件地址。 [doc] [play]
- IsEmptyString : 驗證字串是否是空字串。 [doc] [play]
- IsFloat : 驗證引數是否是浮點數((float32,float34)。 [doc] [play]
- IsFloatStr : 驗證字串是否是可以轉換為浮點數。 [doc] [play]
- IsNumber : 驗證引數是否是數字(integer,float)。 [doc] [play]
- IsNumberStr : 驗證字串是否是可以轉換為數字。 [doc] [play]
- IsJSON : 驗證字串是否是有效 json。 [doc] [play]
- IsRegexMatch : 驗證字串是否可以匹配正規表示式。 [doc] [play]
- IsInt : 驗證引數是否是整數(int, unit)。 [doc] [play]
- IsIntStr : 驗證字串是否是可以轉換為整數。 [doc] [play]
- IsIp : 驗證字串是否是 ip 地址。 [doc] [play]
- IsIpV4 : 驗證字串是否是 ipv4 地址。 [doc] [play]
- IsIpV6 : 驗證字串是否是 ipv6 地址。 [doc] [play]
- IsStrongPassword : 驗證字串是否是強密碼:(字母+數字+特殊字元)。 [doc] [play]
- IsUrl : 驗證字串是否是 url。 [doc] [play]
- IsWeakPassword : 驗證字串是否是弱密碼(只包含字母+數字)。 [doc] [play]
- IsZeroValue : 判斷傳入的引數值是否為零值。 [doc] [play]
- IsGBK : 檢查資料編碼是否為 gbk(漢字內部程式碼擴充套件規範)。 [doc] [play]
- IsASCII : 驗證字串全部為 ASCII 字元。 [doc] [play]
- IsPrintable : 檢查字串是否全部為可列印字元。 [doc] [play]
- IsBin : 檢查字串是否是有效的二進位制數。 [doc] [play]
- IsHex : 檢查字串是否是有效的十六進位制數。 [doc] [play]
- IsBase64URL : 檢查字串是否是有效的 base64 url。 [doc] [play]
- IsJWT : 檢查字串是否是有效的 JSON Web Token (JWT)。 [doc] [play]
- IsVisa : 檢查字串是否是有效的 visa 卡號。 [doc] [play]
- IsMasterCard : 檢查字串是否是有效的 MasterCard 卡號。 [doc] [play]
- IsAmericanExpress : 檢查字串是否是有效的 American Express 卡號。 [doc] [play]
- IsUnionPay : 檢查字串是否是有效的美國銀聯卡號。 [doc] [play]
- IsChinaUnionPay : 檢查字串是否是有效的中國銀聯卡號。 [doc] [play]
25. xerror 包實現一些錯誤處理函式。 回到目錄
import "github.com/duke-git/lancet/v2/xerror"
函式列表:
- New : 建立 XError 物件例項。 [doc] [play]
- Wrap : 根據 error 物件建立 XError 物件例項,可新增 message。 [doc] [play]
- Unwrap : 從 error 物件中解構出 XError。 [doc] [play]
- XError_Wrap : 建立新的 XError 物件並將訊息和 id 複製到新的物件中。 [doc] [play]
- XError_Unwrap : 解構 XEerror 為 error 物件。適配 github.com/pkg/errors。 [doc [play]
- XError_With : 新增與 XError 物件的鍵和值。 [doc] [play]
- XError_Id : 設定 XError 物件的 id。 [doc] [play]
- XError_Is : 檢查目標 error 是否為 XError,兩個錯誤中的 error.id 是否匹配。 [doc] [play]
- XError_Values : 返回由 With 設定的鍵和值的對映。將合併所有 XError 鍵和值。 [doc] [play]
- XError_StackTrace : 返回與 pkg/error 相容的堆疊資訊。 [doc] [play]
- XError_Info : 返回可列印的 XError 物件資訊。 [doc] [play]
- XError_Error : 實現標準庫的 error 介面。 [doc] [play]
- TryUnwrap : 檢查 error, 如果 err 為 nil 則展開,則它返回一個有效值,如果 err 不是 nil 則 Unwrap 使用 err 發生 panic。 [doc] [play]