SkillAgentSearch skills...

Lancet

A comprehensive, efficient, and reusable util function library of Go.

Install / Use

/learn @duke-git/Lancet
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align=center> <img src="./logo.png" width="200" height="200"/> <br/>

Go version Release GoDoc Go Report Card test codecov License Gurubase

</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:

  1. <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
  1. <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>

<h3 id="algorithm">1. Algorithm package implements some basic algorithm. eg. sort, search. &nbsp; &nbsp; &nbsp; &nbsp;<a href="#index">index</a></h3>
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]
<h3 id="compare"> 2. Compare package provides a lightweight comparison function on any type. &nbsp; &nbsp; &nbsp; &nbsp;<a href="#index">index</a> </h3>
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 left less than value right. [doc] [play]
  • <big>GreaterThan</big> : Checks if value left greater than value right. [doc] [play]
  • <big>LessOrEqual</big> : Checks if value left less than or equal than value right. [doc] [play]
  • <big>GreaterOrEqual</big> : Checks if value left less greater or equal than value right. [doc] [play]
  • <big>InDelta</big> : Checks if two values are equal or not within a delta. [doc]
<h3 id="concurrency"> 3. Concurrency package contain some functions to support concurrent programming. eg, goroutine, channel, async. &nbsp; &nbsp; &nbsp; &nbsp;<a href="#index">index</a> </h3>
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
View on GitHub
GitHub Stars5.3k
CategoryDevelopment
Updated1d ago
Forks522

Languages

Go

Security Score

100/100

Audited on Mar 29, 2026

No findings