Lancet
A comprehensive, efficient, and reusable util function library of Go.
Install / Use
/learn @duke-git/LancetREADME
<div align=center>
<img src="./logo.png" width="200" height="200"/>
<br/>
</div>
<div STYLE="page-break-after: always;"></div>
<p style="font-size: 20px">
Lancet is a comprehensive, efficient, and reusable util function library of go. Inspired by the java apache common package and lodash.js.
</p>
<a href="https://www.golancet.cn/en/" target="_blank"> Website</a> | 简体中文
Features
- 👏 Comprehensive, efficient and reusable.
- 💪 700+ go util functions, support string, slice, datetime, net, crypt...
- 💅 Only depends on two kinds of libraries: go standard library and golang.org/x.
- 🌍 Unit test for every exported function.
Installation
Note:
- <b>For users who use go1.18 and above, it is recommended to install lancet v2.x.x. Cause in v2.x.x all functions were rewritten with generics of go1.18.</b>
go get github.com/duke-git/lancet/v2 // will install latest version of v2.x.x
- <b>For users who use version below go1.18, you should install v1.x.x. The latest of v1.x.x is v1.4.6. </b>
go get github.com/duke-git/lancet // below go1.18, install latest version of v1.x.x
Usage
Lancet organizes the code into package structure, and you need to import the corresponding package name when use it. For example, if you use string-related functions,import the strutil package like below:
import "github.com/duke-git/lancet/v2/strutil"
Example
Here takes the string function Reverse (reverse order string) as an example, and the strutil package needs to be imported.
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/strutil"
)
func main() {
s := "hello"
rs := strutil.Reverse(s)
fmt.Println(rs) //olleh
}
Documentation
<span id="index">Index<span>
- Algorithm
- Compare
- Concurrency
- Condition
- Convertor
- Cryptor
- Datetime
- Datastructure
- EventBus
- Enum
- Fileutil
- Formatter
- Function
- Maputil
- Mathutil
- Netutil
- Pointer
- Random
- Retry
- Slice
- Stream
- Structs
- Strutil
- System
- Tuple
- Validator
- Xerror
import "github.com/duke-git/lancet/v2/algorithm"
Function list:
- <big>BubbleSort</big> : sorts slice with bubble sort algorithm, will change the original slice. [doc] [play]
- <big>CountSort</big> : sorts slice with bubble sort algorithm, don't change original slice. [doc] [play]
- <big>HeapSort</big> : sorts slice with heap sort algorithm, will change the original slice. [doc] [play]
- <big>InsertionSort</big> : sorts slice with insertion sort algorithm, will change the original slice. [doc] [play]
- <big>MergeSort</big> : sorts slice with merge sort algorithm, will change the original slice. [doc] [play]
- <big>QuickSort</big> : sorts slice with quick sort algorithm, will change the original slice. [doc] [play]
- <big>SelectionSort</big> : sorts slice with selection sort algorithm, will change the original slice. [doc] [play]
- <big>ShellSort</big> : sorts slice with shell sort algorithm, will change the original slice. [doc] [play]
- <big>BinarySearch</big> : returns the index of target within a sorted slice, use binary search (recursive call itself). [doc] [play]
- <big>BinaryIterativeSearch</big> : returns the index of target within a sorted slice, use binary search (no recursive). [doc] [play]
- <big>LinearSearch</big> : returns the index of target in slice base on equal function. [doc] [play]
- <big>LRUCache</big> : implements memory cache with lru algorithm. [doc] [play]
import "github.com/duke-git/lancet/v2/compare"
Function list:
- <big>Equal</big> : Checks if two values are equal or not. (check both type and value) [doc] [play]
- <big>EqualValue</big> : Checks if two values are equal or not. (check value only) [doc] [play]
- <big>LessThan</big> : Checks if value
leftless than valueright. [doc] [play] - <big>GreaterThan</big> : Checks if value
leftgreater than valueright. [doc] [play] - <big>LessOrEqual</big> : Checks if value
leftless than or equal than valueright. [doc] [play] - <big>GreaterOrEqual</big> : Checks if value
leftless greater or equal than valueright. [doc] [play] - <big>InDelta</big> : Checks if two values are equal or not within a delta. [doc]
import "github.com/duke-git/lancet/v2/concurrency"
Function list:
- <big>NewChannel</big> : create a Channel pointer instance. [doc] [play]
- <big>Bridge</big> : link multiply channels into one channel. [doc] [play]
- <big>FanIn</big> : merge multiple channels into one channel. [doc] [play]
- <big>Generate</big> : creates a channel, then put values into the channel. [[doc](htt
