github.com/duke-git/lancet/v2/validator lancet(柳葉刀)是一個全面、高效、可複用的go語言工具函式庫。 lancet受到了java apache common包和lodash.js的啟發

技术颜良發表於2024-07-30

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:

  1. 使用 go1.18 及以上版本的使用者,建議安裝 v2.x.x。 因為 v2.x.x 應用 go1.18 的泛型重寫了大部分函式。
go get github.com/duke-git/lancet/v2 //安裝v2最新版本v2.x.x
  1. 使用 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 : 獲取FieldTag,預設的 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]

相關文章