[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71471":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},71471,"lancet","duke-git\u002Flancet","duke-git","A comprehensive, efficient, and reusable util function library of Go.","https:\u002F\u002Fwww.golancet.cn\u002Fen\u002F",null,"Go",5296,521,43,6,0,1,3,13,39.15,"MIT License",false,"main",true,[26,27,28,29,30,31],"generics","go","golang","library","lodash","utils","2026-06-12 02:02:52","\u003Cdiv align=center>\n\u003Cimg src=\".\u002Flogo.png\" width=\"200\" height=\"200\"\u002F>\n\n\u003Cbr\u002F>\n\n![Go version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgo-%3E%3Dv1.18-9cf)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frelease-2.3.9-green.svg)](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Freleases)\n[![GoDoc](https:\u002F\u002Fgodoc.org\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fv2?status.svg)](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fv2)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fv2)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fv2)\n[![test](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Factions\u002Fworkflows\u002Fcodecov.yml\u002Fbadge.svg?branch=main&event=push)](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Factions\u002Fworkflows\u002Fcodecov.yml)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fduke-git\u002Flancet\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=FC48T1F078)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fduke-git\u002Flancet)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002FLICENSE)\n[![Gurubase](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGurubase-Ask%20Lancet%20Guru-006BFF)](https:\u002F\u002Fgurubase.io\u002Fg\u002Flancet)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv STYLE=\"page-break-after: always;\">\u003C\u002Fdiv>\n\n\u003Cp style=\"font-size: 20px\"> \n    Lancet is a comprehensive, efficient, and reusable util function library of go. Inspired by the java apache common package and lodash.js.\n\u003C\u002Fp>\n\n## \u003Ca href=\"https:\u002F\u002Fwww.golancet.cn\u002Fen\u002F\" target=\"_blank\"> Website\u003C\u002Fa> | [简体中文](.\u002FREADME_zh-CN.md)\n\n## Features\n\n-   👏 Comprehensive, efficient and reusable.\n-   💪 700+ go util functions, support string, slice, datetime, net, crypt...\n-   💅 Only depends on two kinds of libraries: go standard library and golang.org\u002Fx.\n-   🌍 Unit test for every exported function.\n\n## Installation\n\n### Note:\n\n1. \u003Cb>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.\u003C\u002Fb>\n\n```go\ngo get github.com\u002Fduke-git\u002Flancet\u002Fv2 \u002F\u002F will install latest version of v2.x.x\n```\n\n2. \u003Cb>For users who use version below go1.18, you should install v1.x.x. The latest of v1.x.x is v1.4.6. \u003C\u002Fb>\n\n```go\ngo get github.com\u002Fduke-git\u002Flancet \u002F\u002F below go1.18, install latest version of v1.x.x\n```\n\n## Usage\n\nLancet 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:\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fstrutil\"\n```\n\n## Example\n\nHere takes the string function Reverse (reverse order string) as an example, and the strutil package needs to be imported.\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fstrutil\"\n)\n\nfunc main() {\n    s := \"hello\"\n    rs := strutil.Reverse(s)\n    fmt.Println(rs) \u002F\u002Folleh\n}\n```\n\n## Documentation\n\n### \u003Cspan id=\"index\">Index\u003Cspan>\n\n-   [Algorithm](#user-content-algorithm)\n-   [Compare](#user-content-compare)\n-   [Concurrency](#user-content-concurrency)\n-   [Condition](#user-content-condition)\n-   [Convertor](#user-content-convertor)\n-   [Cryptor](#user-content-cryptor)\n-   [Datetime](#user-content-datetime)\n-   [Datastructure](#user-content-datastructure)\n-   [EventBus](#user-content-eventbus)\n-   [Enum](#user-content-enum)\n-   [Fileutil](#user-content-fileutil)\n-   [Formatter](#user-content-formatter)\n-   [Function](#user-content-function)\n-   [Maputil](#user-content-maputil)\n-   [Mathutil](#user-content-mathutil)\n-   [Netutil](#user-content-netutil)\n-   [Pointer](#user-content-pointer)\n-   [Random](#user-content-random)\n-   [Retry](#user-content-retry)\n-   [Slice](#user-content-slice)\n-   [Stream](#user-content-stream)\n-   [Structs](#user-content-structs)\n-   [Strutil](#user-content-strutil)\n-   [System](#user-content-system)\n-   [Tuple](#user-content-tuple)\n-   [Validator](#user-content-validator)\n-   [Xerror](#user-content-xerror)\n\n\u003Ch3 id=\"algorithm\">1. Algorithm package implements some basic algorithm. eg. sort, search. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Falgorithm\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>BubbleSort\u003C\u002Fbig>** : sorts slice with bubble sort algorithm, will change the original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#BubbleSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FGNdv7Jg2Taj)]\n-   **\u003Cbig>CountSort\u003C\u002Fbig>** : sorts slice with bubble sort algorithm, don't change original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#CountSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FtB-Umgm0DrP)]\n-   **\u003Cbig>HeapSort\u003C\u002Fbig>** : sorts slice with heap sort algorithm, will change the original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#HeapSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fu6Iwa1VZS_f)]\n-   **\u003Cbig>InsertionSort\u003C\u002Fbig>** : sorts slice with insertion sort algorithm, will change the original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#InsertionSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FG5LJiWgJJW6)]\n-   **\u003Cbig>MergeSort\u003C\u002Fbig>** : sorts slice with merge sort algorithm, will change the original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#MergeSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fydinn9YzUJn)]\n-   **\u003Cbig>QuickSort\u003C\u002Fbig>** : sorts slice with quick sort algorithm, will change the original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#QuickSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F7Y7c1Elk3ax)]\n-   **\u003Cbig>SelectionSort\u003C\u002Fbig>** : sorts slice with selection sort algorithm, will change the original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#SelectionSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FoXovbkekayS)]\n-   **\u003Cbig>ShellSort\u003C\u002Fbig>** : sorts slice with shell sort algorithm, will change the original slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#ShellSort)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F3ibkszpJEu3)]\n-   **\u003Cbig>BinarySearch\u003C\u002Fbig>** : returns the index of target within a sorted slice, use binary search (recursive call itself).\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#BinarySearch)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Ft6MeGiUSN47)]\n-   **\u003Cbig>BinaryIterativeSearch\u003C\u002Fbig>** : returns the index of target within a sorted slice, use binary search (no recursive).\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#BinaryIterativeSearch)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FAnozfr8ZLH3)]\n-   **\u003Cbig>LinearSearch\u003C\u002Fbig>** : returns the index of target in slice base on equal function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#LinearSearch)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FIsS7rgn5s3x)]\n-   **\u003Cbig>LRUCache\u003C\u002Fbig>** : implements memory cache with lru algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Falgorithm.md#LRUCache)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F-EZjgOURufP)]\n\n\u003Ch3 id=\"compare\"> 2. Compare package provides a lightweight comparison function on any type. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa> \u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fcompare\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>Equal\u003C\u002Fbig>** : Checks if two values are equal or not. (check both type and value)\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcompare.md#Equal)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FwmVxR-to4lz)]\n-   **\u003Cbig>EqualValue\u003C\u002Fbig>** : Checks if two values are equal or not. (check value only)\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcompare.md#EqualValue)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Ffxnna_LLD9u)]\n-   **\u003Cbig>LessThan\u003C\u002Fbig>** : Checks if value `left` less than value `right`.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcompare.md#LessThan)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FcYh7FQQj0ne)]\n-   **\u003Cbig>GreaterThan\u003C\u002Fbig>** : Checks if value `left` greater than value `right`.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcompare.md#GreaterThan)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F9-NYDFZmIMp)]\n-   **\u003Cbig>LessOrEqual\u003C\u002Fbig>** : Checks if value `left` less than or equal than value `right`.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcompare.md#LessOrEqual)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fe4T_scwoQzp)]\n-   **\u003Cbig>GreaterOrEqual\u003C\u002Fbig>** : Checks if value `left` less greater or equal than value `right`.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcompare.md#GreaterOrEqual)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fvx8mP0U8DFk)]\n-   **\u003Cbig>InDelta\u003C\u002Fbig>** : Checks if two values are equal or not within a delta.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcompare.md#InDelta)]\n\n\u003Ch3 id=\"concurrency\"> 3. Concurrency package contain some functions to support concurrent programming. eg, goroutine, channel, async. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa> \u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fconcurrency\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>NewChannel\u003C\u002Fbig>** : create a Channel pointer instance.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#NewChannel)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F7aB4KyMMp9A)]\n-   **\u003Cbig>Bridge\u003C\u002Fbig>** : link multiply channels into one channel.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002FBridge.md#NewChannel)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FqmWSy1NVF-Y)]\n-   **\u003Cbig>FanIn\u003C\u002Fbig>** : merge multiple channels into one channel.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#FanIn)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F2VYFMexEvTm)]\n-   **\u003Cbig>Generate\u003C\u002Fbig>** : creates a channel, then put values into the channel.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Generate)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F7aB4KyMMp9A)]\n-   **\u003Cbig>Or\u003C\u002Fbig>** : read one or more channels into one channel, will close when any readin channel is closed.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Or)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FWqz9rwioPww)]\n-   **\u003Cbig>OrDone\u003C\u002Fbig>** : read a channel into another channel, will close until cancel context.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#OrDone)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Flm_GoS6aDjo)]\n-   **\u003Cbig>Repeat\u003C\u002Fbig>** : create channel, put values into the channel repeatedly until cancel the context.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Repeat)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fk5N_ALVmYjE)]\n-   **\u003Cbig>RepeatFn\u003C\u002Fbig>** : create a channel, executes fn repeatedly, and put the result into the channel, until close context.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#RepeatFn)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F4J1zAWttP85)]\n-   **\u003Cbig>Take\u003C\u002Fbig>** : create a channel whose values are taken from another channel with limit number.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Take)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F9Utt-1pDr2J)]\n-   **\u003Cbig>Tee\u003C\u002Fbig>** : split one chanel into two channels, until cancel the context.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Tee)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F3TQPKnCirrP)]\n-   **\u003Cbig>NewKeyedLocker\u003C\u002Fbig>** : KeyedLocker is a simple implementation of a keyed locker that allows for non-blocking lock acquisition.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#NewKeyedLocker)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FGzeyC33T5rw)]\n-   **\u003Cbig>Do\u003C\u002Fbig>** :acquires a lock for the specified key and executes the provided function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Do)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FGzeyC33T5rw)]\n-   **\u003Cbig>NewRWKeyedLocker\u003C\u002Fbig>** :RRWKeyedLocker is a read-write version of KeyedLocker.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#NewRWKeyedLocker)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FZrCr8sMo77T)]\n-   **\u003Cbig>RLock\u003C\u002Fbig>** : acquires a read lock for the specified key and executes the provided function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#RLock)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FZrCr8sMo77T)]\n-   **\u003Cbig>Lock\u003C\u002Fbig>** : acquires a write lock for the specified key and executes the provided function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Lock)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FWgAcXbOPKGk)]\n-   **\u003Cbig>NewTryKeyedLocker\u003C\u002Fbig>** : TryKeyedLocker is a non-blocking version of KeyedLocker.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#NewTryKeyedLocker)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVG9qLvyetE2)]\n-   **\u003Cbig>TryLock\u003C\u002Fbig>** : TryLock tries to acquire a lock for the specified key.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#TryLock)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVG9qLvyetE2)]\n-   **\u003Cbig>Unlock\u003C\u002Fbig>** : Unlock releases the lock for the specified key.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconcurrency.md#Unlock)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVG9qLvyetE2)]\n\n\u003Ch3 id=\"condition\"> 4. Condition package contains some functions for conditional judgment. eg. And, Or, TernaryOperator...&nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa> \u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fcondition\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>Bool\u003C\u002Fbig>** : returns the truthy value of anything.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#Bool)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FETzeDJRSvhm)]\n-   **\u003Cbig>And\u003C\u002Fbig>** : returns true if both a and b are truthy.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#And)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FW1SSUmt6pvr)]\n-   **\u003Cbig>Or\u003C\u002Fbig>** : returns false if neither a nor b is truthy.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#Or)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FUlQTxHaeEkq)]\n-   **\u003Cbig>Xor\u003C\u002Fbig>** : returns true if a or b but not both is truthy.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#Xor)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FgObZrW7ZbG8)]\n-   **\u003Cbig>Nor\u003C\u002Fbig>** : returns true if neither a nor b is truthy.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#Nor)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fg2j08F_zZky)]\n-   **\u003Cbig>Xnor\u003C\u002Fbig>** : returns true if both a and b or neither a nor b are truthy.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#Xnor)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FOuDB9g51643)]\n-   **\u003Cbig>Nand\u003C\u002Fbig>** : returns false if both a and b are truthy.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#Nand)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FvSRMLxLIbq8)]\n-   **\u003Cbig>TernaryOperator\u003C\u002Fbig>** : ternary operator.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcondition.md#TernaryOperator)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FElllPZY0guT)]\n\n\u003Ch3 id=\"convertor\"> 5. Convertor package contains some functions for data conversion. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa> \u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fconvertor\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>ColorHexToRGB\u003C\u002Fbig>** : convert color hex to color rgb.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ColorHexToRGB)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fo7_ft-JCJBV)]\n-   **\u003Cbig>ColorRGBToHex\u003C\u002Fbig>** : convert rgb color to hex color.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ColorRGBToHex)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FnzKS2Ro87J1)]\n-   **\u003Cbig>ToBool\u003C\u002Fbig>** : convert string to bool.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToBool)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FARht2WnGdIN)]\n-   **\u003Cbig>ToBytes\u003C\u002Fbig>** : convert value to byte slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToBytes)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FfAMXYFDvOvr)]\n-   **\u003Cbig>ToChar\u003C\u002Fbig>** : convert string to char slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToChar)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FJJ1SvbFkVdM)]\n-   **\u003Cbig>ToChannel\u003C\u002Fbig>** : convert a collection of elements to a read-only channel.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToChannel)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FhOx_oYZbAnL)]\n-   **\u003Cbig>ToFloat\u003C\u002Fbig>** : convert value to float64, if param is a invalid floatable, will return 0.0 and error.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToFloat)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F4YTmPCibqHJ)]\n-   **\u003Cbig>ToInt\u003C\u002Fbig>** : convert value to int64 value, if input is not numerical, return 0 and error.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToInt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F9_h9vIt-QZ_b)]\n-   **\u003Cbig>ToJson\u003C\u002Fbig>** : convert value to a json string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToJson)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F2rLIkMmXWvR)]\n-   **\u003Cbig>ToMap\u003C\u002Fbig>** : convert a slice of structs to a map based on iteratee function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToMap)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FtVFy7E-t24l)]\n-   **\u003Cbig>ToPointer\u003C\u002Fbig>** : return a pointer of passed value.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToPointer)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FASf_etHNlw1)]\n-   **\u003Cbig>ToPointers\u003C\u002Fbig>** : convert a slice of values to a slice of pointers.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToPointers)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FZUoXd2i5ZkV)]\n-   **\u003Cbig>FromPointer\u003C\u002Fbig>** : returns the value pointed to by the pointer.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#FromPointer)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FwAp90V7Zu6g)]\n-   **\u003Cbig>FromPointers\u003C\u002Fbig>** : convert a slice of pointers to a slice of values.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#FromPointers)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FqIPsyYtNy3Q)]\n-   **\u003Cbig>ToString\u003C\u002Fbig>** : convert value to string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToString)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FnF1zOOslpQq)]\n-   **\u003Cbig>StructToMap\u003C\u002Fbig>** : convert struct to map, only convert exported struct field.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#StructToMap)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FKYGYJqNUBOI)]\n-   **\u003Cbig>MapToSlice\u003C\u002Fbig>** : convert map to slice based on iteratee function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#MapToSlice)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FdmX4Ix5V6Wl)]\n-   **\u003Cbig>EncodeByte\u003C\u002Fbig>** : encode data to byte slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#EncodeByte)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FDVmM1G5JfuP)]\n-   **\u003Cbig>DecodeByte\u003C\u002Fbig>** : decode byte slice data to target object.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#DecodeByte)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FzI6xsmuQRbn)]\n-   **\u003Cbig>DeepClone\u003C\u002Fbig>** : creates a deep copy of passed item, can't clone unexported field of struct.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#DeepClone)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fj4DP5dquxnk)]\n-   **\u003Cbig>CopyProperties\u003C\u002Fbig>** : copies each field from the source struct into the destination struct.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#CopyProperties)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FoZujoB5Sgg5)]\n-   **\u003Cbig>ToInterface\u003C\u002Fbig>** : converts reflect value to its interface type.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToInterface)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fsyqw0-WG7Xd)]\n-   **\u003Cbig>Utf8ToGbk\u003C\u002Fbig>** : converts utf8 encoding data to GBK encoding data\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#Utf8ToGbk)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F9FlIaFLArIL)]\n-   **\u003Cbig>GbkToUtf8\u003C\u002Fbig>** : converts GBK encoding data to utf8 encoding data.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#GbkToUtf8)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FOphmHCN_9u8)]\n-   **\u003Cbig>ToStdBase64\u003C\u002Fbig>** : converts a value to a string encoded in standard Base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToStdBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F_fLJqJD3NMo)]\n-   **\u003Cbig>ToUrlBase64\u003C\u002Fbig>** : converts a value to a string encoded in url Base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToUrlBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FC_d0GlvEeUR)]\n-   **\u003Cbig>ToRawStdBase64\u003C\u002Fbig>** : converts a value to a string encoded in raw standard Base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToRawStdBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FwSAr3sfkDcv)]\n-   **\u003Cbig>ToRawUrlBase64\u003C\u002Fbig>** : converts a value to a string encoded in raw url Base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToRawUrlBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FHwdDPFcza1O)]\n-   **\u003Cbig>ToBigInt\u003C\u002Fbig>** : converts an integer of any supported type (int, int64, uint64, etc.) to \\*big.Int.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fconvertor.md#ToBigInt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FX3itkCxwB_x)]\n\n\u003Ch3 id=\"cryptor\"> 6. Cryptor package is for data encryption and decryption.&nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fcryptor\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>AesEcbEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use AES ECB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesEcbEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FzI6xsmuQRbn)]\n-   **\u003Cbig>AesEcbDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use AES ECB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesEcbDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FzI6xsmuQRbn)]\n-   **\u003Cbig>AesCbcEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use AES CBC algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesCbcEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FIOq_g8_lKZD)]\n-   **\u003Cbig>AesCbcDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use AES CBC algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesCbcDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FIOq_g8_lKZD)]\n-   **\u003Cbig>AesCtrCrypt\u003C\u002Fbig>** : encrypt\u002F decrypt byte slice data with key use AES CRC algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesCtrCrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FSpaZO0-5Nsp)]\n-   **\u003Cbig>AesCfbEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use AES CFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesCfbEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FtfkF10B13kH)]\n-   **\u003Cbig>AesCfbDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use AES CFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesCfbDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FtfkF10B13kH)]\n-   **\u003Cbig>AesOfbEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use AES OFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesOfbEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVtHxtkUj-3F)]\n-   **\u003Cbig>AesOfbDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use AES OFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesOfbDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVtHxtkUj-3F)]\n-   **\u003Cbig>AesGcmEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use AES GCM algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesGcmEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FrUt0-DmsPCs)]\n-   **\u003Cbig>AesGcmDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use AES GCM algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#AesGcmDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FrUt0-DmsPCs)]\n-   **\u003Cbig>Base64StdEncode\u003C\u002Fbig>** : encode string with base64 encoding.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Base64StdEncode)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVOaUyQUreoK)]\n-   **\u003Cbig>Base64StdDecode\u003C\u002Fbig>** : decode string with base64 encoding.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Base64StdDecode)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FRWQylnJVgIe)]\n-   **\u003Cbig>DesEcbEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use DES ECB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesEcbEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F8qivmPeZy4P)]\n-   **\u003Cbig>DesEcbDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use DES ECB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesEcbDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F8qivmPeZy4P)]\n-   **\u003Cbig>DesCbcEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use DES CBC algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesCbcEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F4cC4QvWfe3_1)]\n-   **\u003Cbig>DesCbcDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use DES CBC algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesCbcDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F4cC4QvWfe3_1)]\n-   **\u003Cbig>DesCtrCrypt\u003C\u002Fbig>** : encrypt\u002Fdecrypt byte slice data with key use DES CRY algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesCtrCrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F9-T6OjKpcdw)]\n-   **\u003Cbig>DesCfbEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use DES CFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesCfbEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fy-eNxcFBlxL)]\n-   **\u003Cbig>DesCfbDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use DES CFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesCfbDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fy-eNxcFBlxL)]\n-   **\u003Cbig>DesOfbEncrypt\u003C\u002Fbig>** : encrypt byte slice data with key use DES OFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesOfbEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F74KmNadjN1J)]\n-   **\u003Cbig>DesOfbDecrypt\u003C\u002Fbig>** : decrypt byte slice data with key use DES OFB algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#DesOfbDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F74KmNadjN1J)]\n-   **\u003Cbig>HmacMd5\u003C\u002Fbig>** : return the md5 hmac hash of string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacMd5)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fuef0q1fz53I)]\n-   **\u003Cbig>HmacMd5WithBase64\u003C\u002Fbig>** : return the md5 hmac hash of base64 string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacMd5WithBase64)]\n-   **\u003Cbig>HmacSha1\u003C\u002Fbig>** : return the hmac hash of string use sha1.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacSha1)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F1UI4oQ4WXKM)]\n-   **\u003Cbig>HmacSha1WithBase64\u003C\u002Fbig>** : return the hmac hash of string use sha1 with base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacSha1WithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F47JmmGrnF7B)]\n-   **\u003Cbig>HmacSha256\u003C\u002Fbig>** : return the hmac hash of string use sha256.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacSha256)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FHhpwXxFhhC0)]\n-   **\u003Cbig>HmacSha256WithBase64\u003C\u002Fbig>** : return the hmac hash of string use sha256 with base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacSha256WithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FEKbkUvPTLwO)]\n-   **\u003Cbig>HmacSha512\u003C\u002Fbig>** : return the hmac hash of string use sha512.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacSha512)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F59Od6m4A0Ud)]\n-   **\u003Cbig>HmacSha512WithBase64\u003C\u002Fbig>** : return the hmac hash of string use sha512 with base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#HmacSha512WithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fc6dSe3E2ydU)]\n-   **\u003Cbig>Md5Byte\u003C\u002Fbig>** : return the md5 string of byte slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Md5Byte)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FsuraalH8lyC)]\n-   **\u003Cbig>Md5ByteWithBase64\u003C\u002Fbig>** : return the md5 string of byte slice with base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Md5ByteWithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FTcb-Z7LN2ax)]\n-   **\u003Cbig>Md5String\u003C\u002Fbig>** : return the md5 value of string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Md5String)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F1bLcVetbTOI)]\n-   **\u003Cbig>Md5StringWithBase64\u003C\u002Fbig>** : return the md5 value of string with base64.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Md5StringWithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FLx4gH7Vdr5_y)]\n-   **\u003Cbig>Md5File\u003C\u002Fbig>** : return the md5 value of file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Md5File)]\n-   **\u003Cbig>Sha1\u003C\u002Fbig>** : return the sha1 value (SHA-1 hash algorithm) of base64 string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sha1)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F_m_uoD1deMT)]\n-   **\u003Cbig>Sha1WithBase64\u003C\u002Fbig>** : return the sha1 value (SHA-1 hash algorithm) of string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sha1WithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FfSyx-Gl2l2-)]\n-   **\u003Cbig>Sha256\u003C\u002Fbig>** : return the sha256 value (SHA-256 hash algorithm) of string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sha256)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FtU9tfBMIAr1)]\n-   **\u003Cbig>Sha256WithBase64\u003C\u002Fbig>** : return the sha256 value (SHA256 hash algorithm) of base64 string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sha256WithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F85IXJHIal1k)]\n-   **\u003Cbig>Sha512\u003C\u002Fbig>** : return the sha512 value (SHA-512 hash algorithm) of string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sha512)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F3WsvLYZxsHa)]\n-   **\u003Cbig>Sha512WithBase64\u003C\u002Fbig>** : return the sha512 value (SHA-512 hash algorithm) of base64 string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sha512WithBase64)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fq_fY2rA-k5I)]\n-   **\u003Cbig>GenerateRsaKey\u003C\u002Fbig>** : create rsa private and public pemo file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#GenerateRsaKey)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FzutRHrDqs0X)]\n-   **\u003Cbig>RsaEncrypt\u003C\u002Fbig>** : encrypt data with ras algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#RsaEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F7_zo6mrx-eX)]\n-   **\u003Cbig>RsaDecrypt\u003C\u002Fbig>** : decrypt data with ras algorithm.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#RsaDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F7_zo6mrx-eX)]\n-   **\u003Cbig>GenerateRsaKeyPair\u003C\u002Fbig>** : creates rsa private and public key.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#GenerateRsaKeyPair)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FsSVmkfENKMz)]\n-   **\u003Cbig>RsaEncryptOAEP\u003C\u002Fbig>** : encrypts the given data with RSA-OAEP.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#RsaEncryptOAEP)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FsSVmkfENKMz)]\n-   **\u003Cbig>RsaDecryptOAEP\u003C\u002Fbig>** : decrypts the data with RSA-OAEP\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#RsaDecryptOAEP)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FsSVmkfENKMz)]\n-   **\u003Cbig>RsaSign\u003C\u002Fbig>** : signs the data with RSA.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#RsaSign)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fqhsbf8BJ6Mf)]\n-   **\u003Cbig>RsaVerifySign\u003C\u002Fbig>** : verifies the signature of the data with RSA.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#RsaVerifySign)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fqhsbf8BJ6Mf)]\n-   **\u003Cbig>GenerateSm2Key\u003C\u002Fbig>** : generate SM2 private and public key.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#GenerateSm2Key)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FbKYMqRLvIx3)]\n-   **\u003Cbig>Sm2Encrypt\u003C\u002Fbig>** : encrypt data with SM2 public key.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sm2Encrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FbKYMqRLvIx3)]\n-   **\u003Cbig>Sm2Decrypt\u003C\u002Fbig>** : decrypt data with SM2 private key.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sm2Decrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FbKYMqRLvIx3)]\n-   **\u003Cbig>Sm3\u003C\u002Fbig>** : return the SM3 hash value (256-bit) of data.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sm3)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FzDAQpteAiOc)]\n-   **\u003Cbig>Sm4EcbEncrypt\u003C\u002Fbig>** : encrypt data with SM4 ECB mode.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sm4EcbEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fl5IQxYuuaED)]\n-   **\u003Cbig>Sm4EcbDecrypt\u003C\u002Fbig>** : decrypt data with SM4 ECB mode.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sm4EcbDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fl5IQxYuuaED)]\n-   **\u003Cbig>Sm4CbcEncrypt\u003C\u002Fbig>** : encrypt data with SM4 CBC mode.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sm4CbcEncrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F65Q6iYhLRTa)]\n-   **\u003Cbig>Sm4CbcDecrypt\u003C\u002Fbig>** : decrypt data with SM4 CBC mode.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fcryptor.md#Sm4CbcDecrypt)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F65Q6iYhLRTa)]\n\n\u003Ch3 id=\"datetime\"> 7. Datetime package supports date and time format and compare. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatetime\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>AddDay\u003C\u002Fbig>** : add or sub day to the time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddDay)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FdIGbs_uTdFa)]\n-   **\u003Cbig>AddHour\u003C\u002Fbig>** : add or sub day to the time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddHour)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FrcMjd7OCsi5)]\n-   **\u003Cbig>AddMinute\u003C\u002Fbig>** : add or sub day to the time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddMinute)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FnT1heB1KUUK)]\n-   **\u003Cbig>AddWeek\u003C\u002Fbig>** : add or sub week to time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddWeek)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FM9TqdMiaA2p)]\n-   **\u003Cbig>AddMonth\u003C\u002Fbig>** : add or sub months to time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddMonth)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FDLoiOnpLvsN)]\n-   **\u003Cbig>AddYear\u003C\u002Fbig>** : add or sub year to the time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddYear)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FMqW2ujnBx10)]\n-   **\u003Cbig>AddDaySafe\u003C\u002Fbig>** : add or sub days to the time and ensure that the returned date does not exceed the valid date of the target year and month.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddDaySafe)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FJTohZFpoDJ3)]\n-   **\u003Cbig>AddMonthSafe\u003C\u002Fbig>** : add or sub months to the time and ensure that the returned date does not exceed the valid date of the target year and month.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddMonthSafe)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FKLw0lo6mbVW)]\n-   **\u003Cbig>AddYearSafe\u003C\u002Fbig>** : Add or sub years to the time and ensure that the returned date does not exceed the valid date of the target year and month.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#AddYearSafe)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FKVGXWZZ54ZH)]\n-   **\u003Cbig>BeginOfMinute\u003C\u002Fbig>** : return the date time at the begin of minute of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#BeginOfMinute)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FieOLVJ9CiFT)]\n-   **\u003Cbig>BeginOfHour\u003C\u002Fbig>** : return the date time at the begin of hour of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#BeginOfHour)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FGhdGFnDWpYs)]\n-   **\u003Cbig>BeginOfDay\u003C\u002Fbig>** : return the date time at the begin of day of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#BeginOfDay)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F94m_UT6cWs9)]\n-   **\u003Cbig>BeginOfWeek\u003C\u002Fbig>** : return the date time at the begin of week of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#BeginOfWeek)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FDCHdcL6gnfV)]\n-   **\u003Cbig>BeginOfMonth\u003C\u002Fbig>** : return the date time at the begin of month of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#BeginOfMonth)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FbWXVFsmmzwL)]\n-   **\u003Cbig>BeginOfYear\u003C\u002Fbig>** : return the date time at the begin of year of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#BeginOfYear)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fi326DSwLnV8)]\n-   **\u003Cbig>EndOfMinute\u003C\u002Fbig>** : return the date time at the end of minute of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#EndOfMinute)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FyrL5wGzPj4z)]\n-   **\u003Cbig>EndOfHour\u003C\u002Fbig>** : return the date time at the end of hour of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#EndOfHour)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F6ce3j_6cVqN)]\n-   **\u003Cbig>EndOfDay\u003C\u002Fbig>** : return the date time at the end of day of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#EndOfDay)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FeMBOvmq5Ih1)]\n-   **\u003Cbig>EndOfWeek\u003C\u002Fbig>** : return the date time at the end of week of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#EndOfWeek)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FmGSA162YgX9)]\n-   **\u003Cbig>EndOfMonth\u003C\u002Fbig>** : return the date time at the end of month of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#EndOfMonth)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F_GWh10B3Nqi)]\n-   **\u003Cbig>EndOfYear\u003C\u002Fbig>** : return the date time at the end of year of specific date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#EndOfYear)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FG01cKlMCvNm)]\n-   **\u003Cbig>GetNowDate\u003C\u002Fbig>** : return format yyyy-mm-dd of current date.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GetNowDate)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FPvfkPpcpBBf)]\n-   **\u003Cbig>GetNowTime\u003C\u002Fbig>** : return format hh-mm-ss of current time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GetNowTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fl7BNxCkTmJS)]\n-   **\u003Cbig>GetNowDateTime\u003C\u002Fbig>** : return format yyyy-mm-dd hh-mm-ss of current datetime.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GetNowDateTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FpI4AqngD0al)]\n-   **\u003Cbig>GetTodayStartTime\u003C\u002Fbig>** : return the start time of today, format: yyyy-mm-dd 00:00:00.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GetTodayStartTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F84siyYF7t99)]\n-   **\u003Cbig>GetTodayEndTime\u003C\u002Fbig>** : return the end time of today, format: yyyy-mm-dd 23:59:59.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GetTodayEndTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FjjrLnfoqgn3)]\n-   **\u003Cbig>GetZeroHourTimestamp\u003C\u002Fbig>** : return timestamp of zero hour (timestamp of 00:00).\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GetZeroHourTimestamp)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FQmL2oIaGE3q)]\n-   **\u003Cbig>GetNightTimestamp\u003C\u002Fbig>** : return timestamp of zero hour (timestamp of 23:59).\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GetNightTimestamp)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FUolysR3MYP1)]\n-   **\u003Cbig>FormatTimeToStr\u003C\u002Fbig>** : convert time to string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#FormatTimeToStr)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F_Ia7M8H_OvE)]\n-   **\u003Cbig>FormatStrToTime\u003C\u002Fbig>** : convert string to time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#FormatStrToTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F1h9FwdU8ql4)]\n-   **\u003Cbig>NewUnix\u003C\u002Fbig>** : return unix timestamp of specific time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#NewUnix)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FpsoSuh_kLRt)]\n-   **\u003Cbig>NewUnixNow\u003C\u002Fbig>** : return unix timestamp of current time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#NewUnixNow)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FU4PPx-9D0oz)]\n-   **\u003Cbig>NewFormat\u003C\u002Fbig>** : return unix timestamp of specific time string, t should be \"yyyy-mm-dd hh:mm:ss\".\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#NewFormat)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVkW08ZOaXPZ)]\n-   **\u003Cbig>NewISO8601\u003C\u002Fbig>** : return unix timestamp of specific iso8601 time string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#NewISO8601)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FmkhOHQkdeA2)]\n-   **\u003Cbig>ToUnix\u003C\u002Fbig>** : return unix timestamp.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#ToUnix)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F_LUiwAdocjy)]\n-   **\u003Cbig>ToFormat\u003C\u002Fbig>** : return the time string 'yyyy-mm-dd hh:mm:ss' of unix time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#ToFormat)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVkW08ZOaXPZ)]\n-   **\u003Cbig>ToFormatForTpl\u003C\u002Fbig>** : return the time string which format is specific tpl.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#ToFormatForTpl)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FnyXxXcQJ8L5)]\n-   **\u003Cbig>ToIso8601\u003C\u002Fbig>** : return iso8601 time string.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#ToIso8601)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FmkhOHQkdeA2)]\n-   **\u003Cbig>IsLeapYear\u003C\u002Fbig>** : check if param `year` is leap year or not.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#IsLeapYear)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FxS1eS2ejGew)]\n-   **\u003Cbig>BetweenSeconds\u003C\u002Fbig>** : returns the number of seconds between two times.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#BetweenSeconds)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fn3YDRyfyXJu)]\n-   **\u003Cbig>DayOfYear\u003C\u002Fbig>** : returns which day of the year the parameter date `t` is.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#DayOfYear)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F0hjqhTwFNlH)]\n-   **\u003Cbig>IsWeekend\u003C\u002Fbig>** : checks if passed time is weekend or not.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#IsWeekend)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FcupRM5aZOIY)]\n-   **\u003Cbig>NowDateOrTime\u003C\u002Fbig>** : returns current datetime with specific format and timezone.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#NowDateOrTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FEZ-begEjtT0)]\n-   **\u003Cbig>Timestamp\u003C\u002Fbig>** : returns current second timestamp.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#Timestamp)]\n-   **\u003Cbig>TimestampMilli\u003C\u002Fbig>** : returns current mill second timestamp.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#TimestampMilli)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F4gvEusOTu1T)]\n-   **\u003Cbig>TimestampMicro\u003C\u002Fbig>** : returns current micro second timestamp.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#TimestampMicro)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F2maANglKHQE)]\n-   **\u003Cbig>TimestampNano\u003C\u002Fbig>** : returns current nano second timestamp.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#TimestampNano)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FA9Oq_COrcCF)]\n-   **\u003Cbig>TrackFuncTime\u003C\u002Fbig>** : tracks function execution time.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#TrackFuncTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FQBSEdfXHPTp)]\n-   **\u003Cbig>DaysBetween\u003C\u002Fbig>** : returns the number of days between two times.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#DaysBetween)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FqD6qGb3TbOy)]\n-   **\u003Cbig>GenerateDatetimesBetween\u003C\u002Fbig>** : returns a slice of strings between two times.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#GenerateDatetimesBetween)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F6kHBpAxD9ZC)]\n-   **\u003Cbig>Min\u003C\u002Fbig>** : returns the earliest time among the given times.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#Min)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FMCIDvHNOGGb)]\n-   **\u003Cbig>Max\u003C\u002Fbig>** : returns the latest time among the given times.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#Max)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F9m6JMk1LB7-)]\n-   **\u003Cbig>MaxMin\u003C\u002Fbig>** : returns the latest and earliest time among the given times.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatetime.md#MaxMin)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FrbW51cDtM_2)]\n\n\u003Ch3 id=\"datastructure\"> 8. Datastructure package contains some common data structure. eg. list, linklist, stack, queue, set, tree, graph. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport list \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Flist\"\nimport copyonwritelist \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Fcopyonwritelist\"\nimport link \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Flink\"\nimport stack \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Fstack\"\nimport queue \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Fqueue\"\nimport set \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Fset\"\nimport tree \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Ftree\"\nimport heap \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Fheap\"\nimport hashmap \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Fhashmap\"\nimport optional \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fdatastructure\u002Foptional\"\n```\n\n#### Structure list:\n\n-   **\u003Cbig>List\u003C\u002Fbig>** : a linear table, implemented with slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Flist.md)]\n-   **\u003Cbig>CopyOnWriteList\u003C\u002Fbig>** : a thread-safe list implementation that uses go slicing as its base.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Fcopyonwritelist.md)]\n-   **\u003Cbig>Link\u003C\u002Fbig>** : link list structure, contains singly link and doubly link.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Flink.md)]\n-   **\u003Cbig>Stack\u003C\u002Fbig>** : stack structure(fifo), contains array stack and link stack.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Fstack.md)]\n-   **\u003Cbig>Queue\u003C\u002Fbig>** : queue structure(filo), contains array queue, circular queue, link queue and priority queue.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Fqueue.md)]\n-   **\u003Cbig>Set\u003C\u002Fbig>** : a data container, like slice, but element of set is not duplicate.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Fset.md)]\n-   **\u003Cbig>Tree\u003C\u002Fbig>** : binary search tree structure.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Ftree.md)]\n-   **\u003Cbig>Heap\u003C\u002Fbig>** : a binary max heap.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Fheap.md)]\n-   **\u003Cbig>Hashmap\u003C\u002Fbig>** : hash map structure.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Fhashmap.md)]\n-   **\u003Cbig>Optional\u003C\u002Fbig>** : Optional container.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fdatastructure\u002Foptional.md)]\n\n\u003Ch3 id=\"eventbus\"> 9. EventBus is an event bus used for handling events within an application. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">Index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Feventbus\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>NewEventBus\u003C\u002Fbig>** : Create an EventBus instance.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#NewEventBus)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FgHbOPV_NUOJ)]\n-   **\u003Cbig>Subscribe\u003C\u002Fbig>** : subscribes to an event with a specific event topic and listener function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#Subscribe)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FEYGf_8cHei-)]\n-   **\u003Cbig>Unsubscribe\u003C\u002Fbig>** : unsubscribes from an event with a specific event topic and listener function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#Unsubscribe)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FTmh7Ttfvprf)]\n-   **\u003Cbig>Publish\u003C\u002Fbig>** : publishes an event with a specific event topic and data payload.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#Publish)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FgHTtVexFSH9)]\n-   **\u003Cbig>ClearListeners\u003C\u002Fbig>** : clears all the listeners.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#ClearListeners)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FKBfBYlKPgqD)]\n-   **\u003Cbig>ClearListenersByTopic\u003C\u002Fbig>** : clears all the listeners by topic.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#ClearListenersByTopic)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FgvMljmJOZmU)]\n-   **\u003Cbig>GetListenersCount\u003C\u002Fbig>** : returns the number of listeners for a specific event topic.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#GetListenersCount)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F8VPJsMQgStM)]\n-   **\u003Cbig>GetAllListenersCount\u003C\u002Fbig>** : returns the total number of all listeners.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#GetAllListenersCount)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FPUlr0xcpEOz)]\n-   **\u003Cbig>GetEvents\u003C\u002Fbig>** : returns all the events topics.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#GetEvents)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FetgjjcOtAjX)]\n-   **\u003Cbig>SetErrorHandler\u003C\u002Fbig>** : sets the error handler function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Feventbus.md#SetErrorHandler)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FgmB0gnFe5mc)]\n\n\u003Ch3 id=\"enum\"> 10. Package enum provides a simple enum implementation. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">Index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Fenum\"\n```\n\n#### Function list:\n\n-   **\u003Cbig>NewItem\u003C\u002Fbig>** : Creates a new enum item.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#NewEventBus)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F8qNsLw01HD5)]\n-   **\u003Cbig>NewItemsFromPairs\u003C\u002Fbig>** : Creates enum items from a slice of Pair structs.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#NewItemsFromPairs)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FxKnoGa7gnev)]\n-   **\u003Cbig>Value\u003C\u002Fbig>** : Returns the value of the enum item.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Value)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FxKnoGa7gnev)]\n-   **\u003Cbig>Name\u003C\u002Fbig>** : Returns the name of the enum item.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Name)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FxKnoGa7gnev)]\n-   **\u003Cbig>Valid\u003C\u002Fbig>** : Checks if the enum item is valid. If a custom check function is provided, it will be used to validate the value.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Valid)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FpA3lYY2VSm3)]\n-   **\u003Cbig>MarshalJSON\u003C\u002Fbig>** : Implementation of json.Marshaler interface.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#MarshalJSON)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FzIZEdAnneB5)]\n-   **\u003Cbig>NewRegistry\u003C\u002Fbig>** : Creates a new enum registry.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#NewRegistry)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FABEXsYfJKMo)]\n-   **\u003Cbig>Add\u003C\u002Fbig>** : Adds enum items to the registry.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Add)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FABEXsYfJKMo)]\n-   **\u003Cbig>Remove\u003C\u002Fbig>** : Removes an enum item from the registry by its value.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Remove)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FdSG84wQ3TuC)]\n-   **\u003Cbig>Update\u003C\u002Fbig>** : Updates the name of an enum item in the registry by its value.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Update)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FOl0moT1J9Xl)]\n-   **\u003Cbig>GetByValue\u003C\u002Fbig>** : Retrieves an enum item by its value.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#GetByValue)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FniJ1U2KlE_m)]\n-   **\u003Cbig>GetByName\u003C\u002Fbig>** : Retrieves an enum item by its name.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#GetByName)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F49ie_gpqH0m)]\n-   **\u003Cbig>Items\u003C\u002Fbig>** : Returns a slice of all enum items in the registry.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Items)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FlAJFAradbvQ)]\n-   **\u003Cbig>Contains\u003C\u002Fbig>** : Checks if an enum item with the given value exists in the registry.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Contains)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F_T-lPYkZn2j)]\n-   **\u003Cbig>Size\u003C\u002Fbig>** : Returns the number of enum items in the registry.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Size)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FTeDArWhlQe2)]\n-   **\u003Cbig>Range\u003C\u002Fbig>** : Iterates over all enum items in the registry and applies the given function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Range)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FGPsZbQbefWN)]\n-   **\u003Cbig>SortedItems\u003C\u002Fbig>** : Returns a slice of all enum items sorted by the given less function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#SortedItems)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FtN9RE_m_WEI)]\n-   **\u003Cbig>Filter\u003C\u002Fbig>** : Returns a slice of enum items that satisfy the given predicate function.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Fenum.md#Filter)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FuTUpTdcyoCU)]\n\n\u003Ch3 id=\"fileutil\"> 11. Fileutil package implements some basic functions for file operations. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-git\u002Flancet\u002Fv2\u002Ffileutil\"\n```\n\n#### Function list：\n\n-   **\u003Cbig>ClearFile\u003C\u002Fbig>** : write empty string to target file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ClearFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FNRZ0ZT-G94H)]\n-   **\u003Cbig>CreateFile\u003C\u002Fbig>** : create file in path.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#CreateFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FlDt8PEsTNKI)]\n-   **\u003Cbig>CreateDir\u003C\u002Fbig>** : create directory in absolute path.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#CreateDir)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FqUuCe1OGQnM)]\n-   **\u003Cbig>CopyFile\u003C\u002Fbig>** : copy src file to dest file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#CopyFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FJg9AMJMLrJi)]\n-   **\u003Cbig>CopyDir\u003C\u002Fbig>** : copy src directory to dest directory.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#CopyDir)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FYAyFTA_UuPb)]\n-   **\u003Cbig>FileMode\u003C\u002Fbig>** : return file's mode and permission.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#FileMode)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F2l2hI42fA3p)]\n-   **\u003Cbig>MiMeType\u003C\u002Fbig>** : return file mime type.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#MiMeType)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fbd5sevSUZNu)]\n-   **\u003Cbig>IsExist\u003C\u002Fbig>** : checks if a file or directory exists.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#IsExist)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FnKKXt8ZQbmh)]\n-   **\u003Cbig>IsLink\u003C\u002Fbig>** : checks if a file is symbol link or not.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#IsLink)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FTL-b-Kzvf44)]\n-   **\u003Cbig>IsDir\u003C\u002Fbig>** : checks if the path is directory or not.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#IsDir)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FWkVwEKqtOWk)]\n-   **\u003Cbig>ListFileNames\u003C\u002Fbig>** : return all file names in the path.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ListFileNames)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FTjd7Y07rejl)]\n-   **\u003Cbig>RemoveFile\u003C\u002Fbig>** : remove file, param should be file path.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#RemoveFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FP2y0XW8a1SH)]\n-   **\u003Cbig>RemoveDir\u003C\u002Fbig>** : delete directory.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#RemoveDir)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FOa6KnPek2uy)]\n-   **\u003Cbig>ReadFileToString\u003C\u002Fbig>** : return string of file content.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ReadFileToString)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fcmfwp_5SQTp)]\n-   **\u003Cbig>ReadFileByLine\u003C\u002Fbig>** : read file line by line, return string slice of file content.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ReadFileByLine)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FsvJP_7ZrBrD)]\n-   **\u003Cbig>Zip\u003C\u002Fbig>** : create a zip file of fpath, fpath could be a file or a directory.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#Zip)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fj-3sWBp8ik_P)]\n-   **\u003Cbig>ZipAppendEntry\u003C\u002Fbig>** : append a single file or directory by fpath to an existing zip file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ZipAppendEntry)]\n-   **\u003Cbig>UnZip\u003C\u002Fbig>** : unzip the zip file and save it to dest path.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#UnZip)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fg0w34kS7B8m)]\n-   **\u003Cbig>CurrentPath\u003C\u002Fbig>** : return current absolute path.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#CurrentPath)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fs74a9iBGcSw)]\n-   **\u003Cbig>IsZipFile\u003C\u002Fbig>** : checks if file is zip file or not.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#IsZipFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002F9M0g2j_uF_e)]\n-   **\u003Cbig>FileSize\u003C\u002Fbig>** : return file size in bytes.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#FileSize)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FH9Z05uD-Jjc)]\n-   **\u003Cbig>MTime\u003C\u002Fbig>** : return file modified time(unix timestamp).\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#MTime)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fs_Tl7lZoAaY)]\n-   **\u003Cbig>Sha\u003C\u002Fbig>** : return file sha value.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#Sha)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FVfEEcO2MJYf)]\n-   **\u003Cbig>ReadCsvFile\u003C\u002Fbig>** : read file content into slice.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ReadCsvFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FOExTkhGEd3_u)]\n-   **\u003Cbig>WriteCsvFile\u003C\u002Fbig>** : write content to target csv file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#WriteCsvFile)]\n-   **\u003Cbig>WriteMapsToCsv\u003C\u002Fbig>** : write slice of map to csv file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#WriteMapsToCsv)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FumAIomZFV1c)]\n-   **\u003Cbig>WriteBytesToFile\u003C\u002Fbig>** : write bytes to target file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#WriteBytesToFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fs7QlDxMj3P8)]\n-   **\u003Cbig>WriteStringToFile\u003C\u002Fbig>** : write string to target file.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#WriteStringToFile)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FGhLS6d8lH_g)]\n-   **\u003Cbig>ReadFile\u003C\u002Fbig>** : read file or url.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ReadFile)]\n-   **\u003Cbig>ChunkRead\u003C\u002Fbig>** : reads a block from the file at the specified offset and returns all lines within the block.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ChunkRead)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002Fr0hPmKWhsgf)]\n-   **\u003Cbig>ParallelChunkRead\u003C\u002Fbig>** : reads the file in parallel and send each chunk of lines to the specified channel.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#ParallelChunkRead)]  \n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FteMXnCsdSEw)]\n-   **\u003Cbig>GetExeOrDllVersion\u003C\u002Fbig>** : Get the version of exe or dll file on windows os.\n    [[doc](https:\u002F\u002Fgithub.com\u002Fduke-git\u002Flancet\u002Fblob\u002Fmain\u002Fdocs\u002Fen\u002Fapi\u002Fpackages\u002Ffileutil.md#GetExeOrDllVersion)]\n    [[play](https:\u002F\u002Fgo.dev\u002Fplay\u002Fp\u002FiLRrDBhE38E)]\n\n\u003Ch3 id=\"formatter\"> 12. Formatter contains some functions for data formatting. &nbsp; &nbsp; &nbsp; &nbsp;\u003Ca href=\"#index\">index\u003C\u002Fa>\u003C\u002Fh3>\n\n```go\nimport \"github.com\u002Fduke-g","Lancet 是一个全面、高效且可重用的 Go 语言工具函数库。该项目提供了超过700个实用功能，涵盖了字符串处理、切片操作、日期时间管理、网络和加密等多个方面，仅依赖于Go标准库和golang.org\u002Fx库，确保了其轻量级与高效性。支持Go 1.18及以上版本的泛型特性，使得代码更加简洁通用。适用于需要丰富辅助函数来简化开发流程的各种Go项目场景中，能够显著提升开发效率与代码质量。",2,"2026-06-11 03:37:55","high_star"]