1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-19 04:02:27 +08:00
Files
lancet/docs/.vitepress/dist/en/api/packages/function.html
2023-08-30 15:08:27 +08:00

474 lines
138 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Function | Lancet</title>
<meta name="description" content="A powerful util function library of Go">
<link rel="preload stylesheet" href="/assets/style.d1d977d1.css" as="style">
<script type="module" src="/assets/app.531ff9c7.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.6e839c56.js">
<link rel="modulepreload" href="/assets/chunks/theme.4451c782.js">
<link rel="modulepreload" href="/assets/en_api_packages_function.md.0aff7e60.lean.js">
<link rel="icon" type="image/png" href="/lancet_logo_mini.png">
<meta name="theme-color" content="#5f67ee">
<meta name="og:type" content="website">
<meta name="og:locale" content="zh">
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"dark",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<meta property="og:url" content="https://golancet.cn">
<meta property="og:description" content="A powerful util function library of Go">
</head>
<body>
<div id="app"><div class="Layout" data-v-324e8308><!--[--><!--]--><!--[--><span tabindex="-1" data-v-9c8615dd></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-9c8615dd> Skip to content </a><!--]--><!----><header class="VPNav" data-v-324e8308 data-v-5bdc5df3><div class="VPNavBar has-sidebar" data-v-5bdc5df3 data-v-c8ceaf10><div class="container" data-v-c8ceaf10><div class="title" data-v-c8ceaf10><div class="VPNavBarTitle has-sidebar" data-v-c8ceaf10 data-v-2973dbb4><a class="title" href="/en/" data-v-2973dbb4><!--[--><!--]--><!--[--><img class="VPImage logo" src="/lancet_logo_mini.png" width="24" height="24" alt data-v-ab19afbb><!--]--><!--[-->Lancet<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-c8ceaf10><div class="curtain" data-v-c8ceaf10></div><div class="content-body" data-v-c8ceaf10><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-c8ceaf10><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-c8ceaf10 data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/en/" tabindex="0" data-v-f732b5d0 data-v-e5ab8091><!--[--><span data-v-e5ab8091>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/guide/introduction.html" tabindex="0" data-v-f732b5d0 data-v-e5ab8091><!--[--><span data-v-e5ab8091>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/en/api/overview.html" tabindex="0" data-v-f732b5d0 data-v-e5ab8091><!--[--><span data-v-e5ab8091>API</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-6b19ffdd><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-6b19ffdd><span class="text" data-v-6b19ffdd><!----><span data-v-6b19ffdd>Links</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-6b19ffdd><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-6b19ffdd><div class="VPMenu" data-v-6b19ffdd data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-2a4d50e5><a class="VPLink link vp-external-link-icon" href="https://github.com/duke-git/lancet/discussions" target="_blank" rel="noreferrer" data-v-2a4d50e5><!--[-->Discussion<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-2a4d50e5><a class="VPLink link vp-external-link-icon" href="https://github.com/duke-git/lancet/releases" target="_blank" rel="noreferrer" data-v-2a4d50e5><!--[-->Changelog<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-2a4d50e5><a class="VPLink link vp-external-link-icon" href="https://github.com/duke-git/lancet/blob/main/CONTRIBUTING.en-US.md" target="_blank" rel="noreferrer" data-v-2a4d50e5><!--[-->Contribution<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-c8ceaf10 data-v-ff4524ae data-v-6b19ffdd><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-6b19ffdd><span class="text" data-v-6b19ffdd><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-6b19ffdd><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg><!----><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-6b19ffdd><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-6b19ffdd><div class="VPMenu" data-v-6b19ffdd data-v-e42ed9b3><!----><!--[--><!--[--><div class="items" data-v-ff4524ae><p class="title" data-v-ff4524ae>English</p><!--[--><div class="VPMenuLink" data-v-ff4524ae data-v-2a4d50e5><a class="VPLink link" href="/api/packages/function.html" data-v-2a4d50e5><!--[-->简体中文<!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-c8ceaf10 data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-a99ed743 data-v-92d8f6fb><span class="check" data-v-92d8f6fb><span class="icon" data-v-92d8f6fb><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-a99ed743><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-a99ed743><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-c8ceaf10 data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/duke-git/lancet" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-c8ceaf10 data-v-c8c2ae4b data-v-6b19ffdd><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-6b19ffdd><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-6b19ffdd><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-6b19ffdd><div class="VPMenu" data-v-6b19ffdd data-v-e42ed9b3><!----><!--[--><!--[--><div class="group translations" data-v-c8c2ae4b><p class="trans-title" data-v-c8c2ae4b>English</p><!--[--><div class="VPMenuLink" data-v-c8c2ae4b data-v-2a4d50e5><a class="VPLink link" href="/api/packages/function.html" data-v-2a4d50e5><!--[-->简体中文<!--]--></a></div><!--]--></div><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-a99ed743 data-v-92d8f6fb><span class="check" data-v-92d8f6fb><span class="icon" data-v-92d8f6fb><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-a99ed743><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-a99ed743><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/duke-git/lancet" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-c8ceaf10 data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-324e8308 data-v-693d654a><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-693d654a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-693d654a><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-693d654a>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-693d654a data-v-e8ae7d87><button data-v-e8ae7d87>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-324e8308 data-v-b04a928c><div class="curtain" data-v-b04a928c></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-b04a928c><span class="visually-hidden" id="sidebar-aria-label" data-v-b04a928c> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-b04a928c><section class="VPSidebarItem level-0" data-v-b04a928c data-v-c356ab37><div class="item" role="button" tabindex="0" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><h2 class="text" data-v-c356ab37>overview</h2><!----></div><div class="items" data-v-c356ab37><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/overview.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>overview of API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-b04a928c><section class="VPSidebarItem level-0 collapsible has-active" data-v-b04a928c data-v-c356ab37><div class="item" role="button" tabindex="0" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><h2 class="text" data-v-c356ab37>packages</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-c356ab37><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-c356ab37><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-c356ab37><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/algorithm.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>algorithm</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/compare.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>compare</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/concurrency.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>concurrency</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/condition.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>condition</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/convertor.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>convertor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/cryptor.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>cryptor</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-1 collapsible collapsed" data-v-c356ab37 data-v-c356ab37><div class="item" role="button" tabindex="0" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><h3 class="text" data-v-c356ab37>datastructure</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-c356ab37><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-c356ab37><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-c356ab37><!--[--><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/list.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>list</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/copyonwritelist.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>safelist</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/link.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>link</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/stack.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>stack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/queue.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>queue</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/heap.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>heap</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/tree.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>tree</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/set.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>set</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datastructure/hashmap.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>hashmap</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/datetime.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>datetime</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/fileutil.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>fileutil</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/formatter.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>formatter</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/function.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>function</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/mathutil.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>mathutil</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/maputil.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>maputil</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/netutil.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>netutil</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/pointer.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>pointer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/random.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>random</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/retry.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>retry</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/slice.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>slice</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/stream.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>stream</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/struct.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>struct</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/strutil.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>strutil</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/system.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>system</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/tuple.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>tuple</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/validator.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>validator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c356ab37 data-v-c356ab37><div class="item" data-v-c356ab37><div class="indicator" data-v-c356ab37></div><a class="VPLink link link" href="/en/api/packages/xerror.html" data-v-c356ab37><!--[--><p class="text" data-v-c356ab37>xerror</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-324e8308 data-v-3cf691b6><div class="VPDoc has-sidebar has-aside" data-v-3cf691b6 data-v-a3c25e27><!--[--><!--]--><div class="container" data-v-a3c25e27><div class="aside" data-v-a3c25e27><div class="aside-curtain" data-v-a3c25e27></div><div class="aside-container" data-v-a3c25e27><div class="aside-content" data-v-a3c25e27><div class="VPDocAside" data-v-a3c25e27 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-cb998dce data-v-c834746b><div class="content" data-v-c834746b><div class="outline-marker" data-v-c834746b></div><div class="outline-title" data-v-c834746b>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-c834746b><span class="visually-hidden" id="doc-outline-aria-label" data-v-c834746b> Table of Contents for current page </span><ul class="root" data-v-c834746b data-v-463da30f><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-a3c25e27><div class="content-container" data-v-a3c25e27><!--[--><!--]--><!----><main class="main" data-v-a3c25e27><div style="position:relative;" class="vp-doc _en_api_packages_function" data-v-a3c25e27><div><h1 id="Function" tabindex="-1">Function <a class="header-anchor" href="#Function" aria-label="Permalink to &quot;Function&quot;"></a></h1><p>Package function can control the flow of function execution and support part of functional programming.</p><div STYLE="page-break-after: always;"></div><h2 id="Source-" tabindex="-1">Source: <a class="header-anchor" href="#Source-" aria-label="Permalink to &quot;Source:&quot;"></a></h2><ul><li><a href="https://github.com/duke-git/lancet/blob/main/function/function.go" target="_blank" rel="noreferrer">https://github.com/duke-git/lancet/blob/main/function/function.go</a></li><li><a href="https://github.com/duke-git/lancet/blob/main/function/watcher.go" target="_blank" rel="noreferrer">https://github.com/duke-git/lancet/blob/main/function/watcher.go</a></li></ul><div STYLE="page-break-after: always;"></div><h2 id="Usage-" tabindex="-1">Usage: <a class="header-anchor" href="#Usage-" aria-label="Permalink to &quot;Usage:&quot;"></a></h2><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span></code></pre></div><div STYLE="page-break-after: always;"></div><h2 id="Index" tabindex="-1">Index <a class="header-anchor" href="#Index" aria-label="Permalink to &quot;Index&quot;"></a></h2><ul><li><a href="#After">After</a></li><li><a href="#Before">Before</a></li><li><a href="#CurryFn">CurryFn</a></li><li><a href="#Compose">Compose</a></li><li><a href="#Debounced">Debounced</a></li><li><a href="#Delay">Delay</a></li><li><a href="#Schedule">Schedule</a></li><li><a href="#Pipeline">Pipeline</a></li><li><a href="#Watcher">Watcher</a></li></ul><div STYLE="page-break-after: always;"></div><h2 id="Documentation" tabindex="-1">Documentation <a class="header-anchor" href="#Documentation" aria-label="Permalink to &quot;Documentation&quot;"></a></h2><h3 id="After" tabindex="-1"><span id="After">After</span> <a class="header-anchor" href="#After" aria-label="Permalink to &quot;&lt;span id=&quot;After&quot;&gt;After&lt;/span&gt;&quot;"></a></h3><p>Creates a function that invokes given func once it&#39;s called n or more times.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">After</span><span style="color:#F6F6F4;">(n </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">, fn any) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any) []reflect.Value</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">After</span><span style="color:#999999;">(</span><span style="color:#393A34;">n </span><span style="color:#AB5959;">int</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">reflect</span><span style="color:#999999;">.</span><span style="color:#393A34;">Value</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/eRD5k2vzUVX" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fn </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">After</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(</span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">hello</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"><span style="color:#F6F6F4;"> })</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">fn</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">After</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">hello</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">})</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Before" tabindex="-1"><span id="Before">Before</span> <a class="header-anchor" href="#Before" aria-label="Permalink to &quot;&lt;span id=&quot;Before&quot;&gt;Before&lt;/span&gt;&quot;"></a></h3><p>creates a function that invokes func once it&#39;s called less than n times.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Before</span><span style="color:#F6F6F4;">(n </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">, fn any) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any) []reflect.Value</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Before</span><span style="color:#999999;">(</span><span style="color:#393A34;">n </span><span style="color:#AB5959;">int</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">reflect</span><span style="color:#999999;">.</span><span style="color:#393A34;">Value</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/0HqUDIFZ3IL" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fn </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Before</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(</span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">hello</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"><span style="color:#F6F6F4;"> })</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">fn</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Before</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">hello</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">})</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="CurryFn" tabindex="-1"><span id="CurryFn">CurryFn</span> <a class="header-anchor" href="#CurryFn" aria-label="Permalink to &quot;&lt;span id=&quot;CurryFn&quot;&gt;CurryFn&lt;/span&gt;&quot;"></a></h3><p>Make curry function.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">CurryFn</span><span style="color:#F6F6F4;">[T any] </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (cf CurryFn[T]) </span><span style="color:#62E884;">New</span><span style="color:#F6F6F4;">(val T) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">CurryFn</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">]</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">cf CurryFn</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">New</span><span style="color:#999999;">(</span><span style="color:#393A34;">val T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/5HopfDwANKX" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> add </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(a, b </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> a </span><span style="color:#F286C4;">+</span><span style="color:#F6F6F4;"> b</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">var</span><span style="color:#F6F6F4;"> addCurry function.CurryFn[</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">] </span><span style="color:#F286C4;">=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(values </span><span style="color:#F286C4;">...</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">add</span><span style="color:#F6F6F4;">(values[</span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">], values[</span><span style="color:#BF9EEE;">1</span><span style="color:#F6F6F4;">])</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> add1 </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> addCurry.</span><span style="color:#97E1F1;">New</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">1</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> result </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">add1</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 3</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">add</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">a</span><span style="color:#999999;">,</span><span style="color:#393A34;"> b </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> a </span><span style="color:#AB5959;">+</span><span style="color:#393A34;"> b</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">var</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">addCurry</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#393A34;">CurryFn</span><span style="color:#999999;">[</span><span style="color:#AB5959;">int</span><span style="color:#999999;">]</span><span style="color:#393A34;"> </span><span style="color:#999999;">=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">values </span><span style="color:#AB5959;">...int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#998418;">add</span><span style="color:#999999;">(</span><span style="color:#393A34;">values</span><span style="color:#999999;">[</span><span style="color:#2F798A;">0</span><span style="color:#999999;">],</span><span style="color:#393A34;"> values</span><span style="color:#999999;">[</span><span style="color:#2F798A;">1</span><span style="color:#999999;">])</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">add1</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> addCurry</span><span style="color:#999999;">.</span><span style="color:#998418;">New</span><span style="color:#999999;">(</span><span style="color:#2F798A;">1</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">result</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#998418;">add1</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">result</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 3</span></span>
<span class="line"><span style="color:#393A34;">}</span></span></code></pre></div><h3 id="Compose" tabindex="-1"><span id="Compose">Compose</span> <a class="header-anchor" href="#Compose" aria-label="Permalink to &quot;&lt;span id=&quot;Compose&quot;&gt;Compose&lt;/span&gt;&quot;"></a></h3><p>Compose the function list from right to left, then return the composed function.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> Compose[T any](fnList </span><span style="color:#F286C4;">...func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> Compose</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">](</span><span style="color:#393A34;">fnList </span><span style="color:#AB5959;">...</span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/KKfugD4PKYF" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> toUpper </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(strs </span><span style="color:#F286C4;">...</span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> strings.</span><span style="color:#97E1F1;">ToUpper</span><span style="color:#F6F6F4;">(strs[</span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">])</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> toLower </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(strs </span><span style="color:#F286C4;">...</span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> strings.</span><span style="color:#97E1F1;">ToLower</span><span style="color:#F6F6F4;">(strs[</span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">])</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> transform </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Compose</span><span style="color:#F6F6F4;">(toUpper, toLower)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> result </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">transform</span><span style="color:#F6F6F4;">(</span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">aBCde</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// ABCDE</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">toUpper</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs </span><span style="color:#AB5959;">...</span><span style="color:#AB5959;">string</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">string</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> strings</span><span style="color:#999999;">.</span><span style="color:#998418;">ToUpper</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs</span><span style="color:#999999;">[</span><span style="color:#2F798A;">0</span><span style="color:#999999;">])</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">toLower</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs </span><span style="color:#AB5959;">...</span><span style="color:#AB5959;">string</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">string</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> strings</span><span style="color:#999999;">.</span><span style="color:#998418;">ToLower</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs</span><span style="color:#999999;">[</span><span style="color:#2F798A;">0</span><span style="color:#999999;">])</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">transform</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Compose</span><span style="color:#999999;">(</span><span style="color:#393A34;">toUpper</span><span style="color:#999999;">,</span><span style="color:#393A34;"> toLower</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">result</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#998418;">transform</span><span style="color:#999999;">(</span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">aBCde</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">result</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// ABCDE</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Debounced" tabindex="-1"><span id="Debounced">Debounced</span> <a class="header-anchor" href="#Debounced" aria-label="Permalink to &quot;&lt;span id=&quot;Debounced&quot;&gt;Debounced&lt;/span&gt;&quot;"></a></h3><p>Creates a debounced function that delays invoking fn until after wait duration have elapsed since the last time the debounced function was invoked.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Debounced</span><span style="color:#F6F6F4;">(fn </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(), duration time.Duration) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">()</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Debounced</span><span style="color:#999999;">(</span><span style="color:#393A34;">fn </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(),</span><span style="color:#393A34;"> duration time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/absuEGB_GN7" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> add </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count</span><span style="color:#F286C4;">++</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> debouncedAdd </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Debounced</span><span style="color:#F6F6F4;">(add, </span><span style="color:#BF9EEE;">50</span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">time.Microsecond)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> time.</span><span style="color:#97E1F1;">Sleep</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">100</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> time.Millisecond)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(count)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> time.</span><span style="color:#97E1F1;">Sleep</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">100</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> time.Millisecond)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(count)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 1</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 2</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">count</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">add</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> count</span><span style="color:#AB5959;">++</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">debouncedAdd</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Debounced</span><span style="color:#999999;">(</span><span style="color:#393A34;">add</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">50</span><span style="color:#AB5959;">*</span><span style="color:#393A34;">time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Microsecond</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#998418;">Sleep</span><span style="color:#999999;">(</span><span style="color:#2F798A;">100</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Millisecond</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">count</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#998418;">Sleep</span><span style="color:#999999;">(</span><span style="color:#2F798A;">100</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Millisecond</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">count</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 1</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 2</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Delay" tabindex="-1"><span id="Delay">Delay</span> <a class="header-anchor" href="#Delay" aria-label="Permalink to &quot;&lt;span id=&quot;Delay&quot;&gt;Delay&lt;/span&gt;&quot;"></a></h3><p>Invoke function after delayed time.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Delay</span><span style="color:#F6F6F4;">(delay time.Duration, fn any, args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any)</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Delay</span><span style="color:#999999;">(</span><span style="color:#393A34;">delay time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">,</span><span style="color:#393A34;"> args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/Ivtc2ZE-Tye" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">var</span><span style="color:#F6F6F4;"> print </span><span style="color:#F286C4;">=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(s </span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;">) {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(s)</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Delay</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">time.Second, print, </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">hello</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">var</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">print</span><span style="color:#393A34;"> </span><span style="color:#999999;">=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">s </span><span style="color:#AB5959;">string</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">s</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Delay</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#AB5959;">*</span><span style="color:#393A34;">time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Second</span><span style="color:#999999;">,</span><span style="color:#393A34;"> print</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">hello</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Schedule" tabindex="-1"><span id="Schedule">Schedule</span> <a class="header-anchor" href="#Schedule" aria-label="Permalink to &quot;&lt;span id=&quot;Schedule&quot;&gt;Schedule&lt;/span&gt;&quot;"></a></h3><p>Invoke function every duration time, until close the returned bool chan.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Schedule</span><span style="color:#F6F6F4;">(d time.Duration, fn any, args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any) </span><span style="color:#F286C4;">chan</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">bool</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Schedule</span><span style="color:#999999;">(</span><span style="color:#393A34;">d time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">,</span><span style="color:#393A34;"> args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">chan</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">bool</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/hbON-Xeyn5N" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> increase </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count</span><span style="color:#F286C4;">++</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> stop </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Schedule</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">time.Second, increase)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> time.</span><span style="color:#97E1F1;">Sleep</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> time.Second)</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">close</span><span style="color:#F6F6F4;">(stop)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(count)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 2</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">count</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">increase</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> count</span><span style="color:#AB5959;">++</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">stop</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Schedule</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#AB5959;">*</span><span style="color:#393A34;">time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Second</span><span style="color:#999999;">,</span><span style="color:#393A34;"> increase</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#998418;">Sleep</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Second</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">close</span><span style="color:#999999;">(</span><span style="color:#393A34;">stop</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">count</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 2</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Pipeline" tabindex="-1"><span id="Pipeline">Pipeline</span> <a class="header-anchor" href="#Pipeline" aria-label="Permalink to &quot;&lt;span id=&quot;Pipeline&quot;&gt;Pipeline&lt;/span&gt;&quot;"></a></h3><p>Pipeline takes a list of functions and returns a function whose param will be passed into the functions one by one.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> Pipeline[T any](funcs </span><span style="color:#F286C4;">...func</span><span style="color:#F6F6F4;">(T) T) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(T) T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> Pipeline</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">](</span><span style="color:#393A34;">funcs </span><span style="color:#AB5959;">...</span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/mPdUVvj6HD6" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> addOne </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(x </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> x </span><span style="color:#F286C4;">+</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> double </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(x </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> x</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> square </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(x </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> x </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> x</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fn </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Pipeline</span><span style="color:#F6F6F4;">(addOne, double, square)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> result </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 36</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">addOne</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">x </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> x </span><span style="color:#AB5959;">+</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">double</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">x </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">2</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> x</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">square</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">x </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> x </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> x</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">fn</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Pipeline</span><span style="color:#999999;">(</span><span style="color:#393A34;">addOne</span><span style="color:#999999;">,</span><span style="color:#393A34;"> double</span><span style="color:#999999;">,</span><span style="color:#393A34;"> square</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">result</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">result</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 36</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Watcher" tabindex="-1"><span id="Watcher">Watcher</span> <a class="header-anchor" href="#Watcher" aria-label="Permalink to &quot;&lt;span id=&quot;Watcher&quot;&gt;Watcher&lt;/span&gt;&quot;"></a></h3><p>Watcher is used for record code excution time. can start/stop/reset the watch timer. get the elapsed time of function execution.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">Watcher</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> startTime </span><span style="color:#97E1F1;font-style:italic;">int64</span></span>
<span class="line"><span style="color:#F6F6F4;"> stopTime </span><span style="color:#97E1F1;font-style:italic;">int64</span></span>
<span class="line"><span style="color:#F6F6F4;"> excuting </span><span style="color:#97E1F1;font-style:italic;">bool</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">NewWatcher</span><span style="color:#F6F6F4;">() </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">Start</span><span style="color:#F6F6F4;">() </span><span style="color:#7B7F8B;">//start the watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">Stop</span><span style="color:#F6F6F4;">() </span><span style="color:#7B7F8B;">//stop the watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">Reset</span><span style="color:#F6F6F4;">() </span><span style="color:#7B7F8B;">//reset the watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">GetElapsedTime</span><span style="color:#F6F6F4;">() time.Duration </span><span style="color:#7B7F8B;">//get the elapsed time of function execution</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">Watcher</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> startTime </span><span style="color:#AB5959;">int64</span></span>
<span class="line"><span style="color:#393A34;"> stopTime </span><span style="color:#AB5959;">int64</span></span>
<span class="line"><span style="color:#393A34;"> excuting </span><span style="color:#AB5959;">bool</span></span>
<span class="line"><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">NewWatcher</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Start</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//start the watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Stop</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//stop the watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Reset</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//reset the watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">GetElapsedTime</span><span style="color:#999999;">()</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration </span><span style="color:#A0ADA0;">//get the elapsed time of function execution</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/l2yrOpCLd1I" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> w </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">NewWatcher</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">Start</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">longRunningTask</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(w.excuting) </span><span style="color:#7B7F8B;">//true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">Stop</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> eapsedTime </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">GetElapsedTime</span><span style="color:#F6F6F4;">().</span><span style="color:#97E1F1;">Milliseconds</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(eapsedTime)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">Reset</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">longRunningTask</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">var</span><span style="color:#F6F6F4;"> slice []</span><span style="color:#97E1F1;font-style:italic;">int64</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">for</span><span style="color:#F6F6F4;"> i </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">; i </span><span style="color:#F286C4;">&lt;</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">10000000</span><span style="color:#F6F6F4;">; i</span><span style="color:#F286C4;">++</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> slice </span><span style="color:#F286C4;">=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">append</span><span style="color:#F6F6F4;">(slice, </span><span style="color:#97E1F1;">int64</span><span style="color:#F6F6F4;">(i))</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">w</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">NewWatcher</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">Start</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">longRunningTask</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">w</span><span style="color:#999999;">.</span><span style="color:#393A34;">excuting</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">Stop</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">eapsedTime</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">GetElapsedTime</span><span style="color:#999999;">().</span><span style="color:#998418;">Milliseconds</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">eapsedTime</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">Reset</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">longRunningTask</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">var</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">slice</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#AB5959;">int64</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">for</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">i</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span><span style="color:#999999;">;</span><span style="color:#393A34;"> i </span><span style="color:#AB5959;">&lt;</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">10000000</span><span style="color:#999999;">;</span><span style="color:#393A34;"> i</span><span style="color:#AB5959;">++</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">slice</span><span style="color:#393A34;"> </span><span style="color:#999999;">=</span><span style="color:#393A34;"> </span><span style="color:#998418;">append</span><span style="color:#999999;">(</span><span style="color:#393A34;">slice</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#998418;">int64</span><span style="color:#999999;">(</span><span style="color:#393A34;">i</span><span style="color:#999999;">))</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-5774f702><!--[--><!--]--><div class="edit-info" data-v-5774f702><div class="edit-link" data-v-5774f702><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/duke-git/lancet/edit/v2/docs/en/api/packages/function.md" target="_blank" rel="noreferrer" data-v-5774f702><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-5774f702><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> Suggest changes to this page<!--]--></a></div><!----></div><nav class="prev-next" data-v-5774f702><div class="pager" data-v-5774f702><a class="pager-link prev" href="/en/api/packages/formatter.html" data-v-5774f702><span class="desc" data-v-5774f702>Previous page</span><span class="title" data-v-5774f702>formatter</span></a></div><div class="pager" data-v-5774f702><a class="pager-link next" href="/en/api/packages/mathutil.html" data-v-5774f702><span class="desc" data-v-5774f702>Next page</span><span class="title" data-v-5774f702>mathutil</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-324e8308 data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Released under the MIT License.</p><p class="copyright" data-v-e4279f1c>Copyright © 2023-present Duke Du</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api_overview.md\":\"0734e445\",\"api_packages_compare.md\":\"046b68ac\",\"api_packages_algorithm.md\":\"a5fd6586\",\"api_packages_concurrency.md\":\"02593d84\",\"api_packages_condition.md\":\"2519cae3\",\"api_packages_convertor.md\":\"3dc6f3b4\",\"api_packages_datastructure_copyonwritelist.md\":\"1a351580\",\"api_packages_datastructure_hashmap.md\":\"310e4711\",\"api_packages_datastructure_heap.md\":\"749f37d9\",\"api_packages_cryptor.md\":\"2d4965d7\",\"api_packages_datastructure_link.md\":\"53b556c9\",\"api_packages_datastructure_list.md\":\"c39c7138\",\"api_packages_datastructure_set.md\":\"8bd77304\",\"api_packages_datastructure_queue.md\":\"55dce1c4\",\"api_packages_datastructure_stack.md\":\"9d7b51a7\",\"api_packages_datastructure_tree.md\":\"1eeacf87\",\"api_packages_datetime.md\":\"53f898b5\",\"api_packages_formatter.md\":\"8820c0cf\",\"api_packages_fileutil.md\":\"94d3797c\",\"api_packages_function.md\":\"5cbb4c31\",\"api_packages_maputil.md\":\"68434477\",\"api_packages_pointer.md\":\"3465a655\",\"api_packages_random.md\":\"c5785d61\",\"api_packages_retry.md\":\"746cf8ed\",\"api_packages_mathutil.md\":\"274658f0\",\"api_packages_netutil.md\":\"d9f6ee6d\",\"api_packages_struct.md\":\"bdd9b8b9\",\"api_packages_stream.md\":\"f8a1897d\",\"api_packages_system.md\":\"3c9cc0ec\",\"api_packages_slice.md\":\"f48c775b\",\"en_api_overview.md\":\"1eb70105\",\"api_packages_strutil.md\":\"2574c069\",\"api_packages_xerror.md\":\"b2d37d2c\",\"api_packages_validator.md\":\"1f431893\",\"en_api_packages_compare.md\":\"409d8174\",\"api_packages_tuple.md\":\"04b31a3e\",\"en_api_packages_algorithm.md\":\"4b3abf4d\",\"en_api_packages_condition.md\":\"a164dfc9\",\"en_api_packages_concurrency.md\":\"4ccb7541\",\"en_api_packages_convertor.md\":\"4d1b1ca4\",\"en_api_packages_datastructure_hashmap.md\":\"55db8537\",\"en_api_packages_datastructure_copyonwritelist.md\":\"c4ab8b5a\",\"en_api_packages_datastructure_heap.md\":\"638dd5d1\",\"en_api_packages_cryptor.md\":\"83b35674\",\"en_api_packages_datastructure_link.md\":\"062572a5\",\"en_api_packages_datastructure_list.md\":\"d467285d\",\"en_api_packages_datastructure_queue.md\":\"88ad36da\",\"en_api_packages_datastructure_set.md\":\"963fc914\",\"en_api_packages_datastructure_stack.md\":\"1998c8dc\",\"en_api_packages_datastructure_tree.md\":\"e0a47a13\",\"en_api_packages_formatter.md\":\"00b1f98e\",\"en_api_packages_function.md\":\"0aff7e60\",\"en_api_packages_fileutil.md\":\"fea45f47\",\"en_api_packages_datetime.md\":\"32edaec1\",\"en_api_packages_pointer.md\":\"51cdc76e\",\"en_api_packages_random.md\":\"09d4734b\",\"en_api_packages_retry.md\":\"9ae8caac\",\"en_api_packages_mathutil.md\":\"cd3e0e74\",\"en_api_packages_maputil.md\":\"4fc65b0e\",\"en_api_packages_netutil.md\":\"4a71afe0\",\"en_api_packages_struct.md\":\"ebe3b9e2\",\"en_api_packages_stream.md\":\"99e473e0\",\"en_api_packages_system.md\":\"b89ed647\",\"en_api_packages_slice.md\":\"1a1b5495\",\"guide_introduction.md\":\"c4fdb40e\",\"index.md\":\"3fde7444\",\"en_guide_introduction.md\":\"d2712e12\",\"en_index.md\":\"3bc9892c\",\"en_guide_getting_started.md\":\"fbd5d30c\",\"guide_getting_started.md\":\"acfc7802\",\"en_api_packages_xerror.md\":\"5cac58cd\",\"en_api_packages_strutil.md\":\"2bfcfdc2\",\"en_api_packages_validator.md\":\"fa34c2f2\",\"en_api_packages_tuple.md\":\"ce828c9e\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Lancet\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":\"dark\",\"themeConfig\":{\"logo\":{\"src\":\"/lancet_logo_mini.png\",\"width\":24,\"height\":24},\"outline\":[2,3],\"search\":{\"provider\":\"local\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/duke-git/lancet\"}],\"footer\":{\"copyright\":\"Copyright © 2023-present Duke Du\",\"message\":\"Released under the MIT License.\"}},\"locales\":{\"root\":{\"label\":\"简体中文\",\"lang\":\"zh-CN\",\"link\":\"/\",\"description\":\"一个强大的Go语言工具函数库\",\"head\":[[\"meta\",{\"property\":\"og:url\",\"content\":\"https://golancet.cn\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"一个强大的Go语言工具函数库\"}]],\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/duke-git/lancet/edit/v2/docs/:path\",\"text\":\"对本页提出修改建议\"},\"outline\":{\"label\":\"本页内容\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\",\"activeMatch\":\"^/\"},{\"text\":\"指南\",\"link\":\"/guide/introduction\",\"activeMatch\":\"^/guide/\"},{\"text\":\"API\",\"link\":\"/api/overview\",\"activeMatch\":\"^/api/\"},{\"text\":\"相关链接\",\"items\":[{\"text\":\"论坛\",\"link\":\"https://github.com/duke-git/lancet/discussions\"},{\"text\":\"更新日志\",\"link\":\"https://github.com/duke-git/lancet/releases\"},{\"text\":\"参与贡献\",\"link\":\"https://github.com/duke-git/lancet/blob/main/CONTRIBUTING.zh-CN.md\"}]}],\"sidebar\":{\"/\":[{\"text\":\"介绍\",\"collapsed\":true,\"items\":[{\"text\":\"Lancet是什么\",\"link\":\"/guide/introduction\"},{\"text\":\"开始\",\"link\":\"/guide/getting_started\"}]}],\"/api/\":[{\"text\":\"概览\",\"items\":[{\"text\":\"API概述\",\"link\":\"/api/overview\"}]},{\"text\":\"API文档\",\"collapsed\":false,\"items\":[{\"text\":\"算法\",\"link\":\"/api/packages/algorithm\"},{\"text\":\"比较器\",\"link\":\"/api/packages/compare\"},{\"text\":\"并发处理\",\"link\":\"/api/packages/concurrency\"},{\"text\":\"条件判断\",\"link\":\"/api/packages/condition\"},{\"text\":\"类型转换\",\"link\":\"/api/packages/convertor\"},{\"text\":\"加密&解密\",\"link\":\"/api/packages/cryptor\"},{\"text\":\"数据结构\",\"collapsed\":true,\"items\":[{\"text\":\"线性表\",\"link\":\"/api/packages/datastructure/list\"},{\"text\":\"线性表(线程安全)\",\"link\":\"/api/packages/datastructure/copyonwritelist\"},{\"text\":\"链表\",\"link\":\"/api/packages/datastructure/link\"},{\"text\":\"栈\",\"link\":\"/api/packages/datastructure/stack\"},{\"text\":\"队列\",\"link\":\"/api/packages/datastructure/queue\"},{\"text\":\"堆\",\"link\":\"/api/packages/datastructure/heap\"},{\"text\":\"树\",\"link\":\"/api/packages/datastructure/tree\"},{\"text\":\"集合\",\"link\":\"/api/packages/datastructure/set\"},{\"text\":\"HashMap\",\"link\":\"/api/packages/datastructure/hashmap\"}]},{\"text\":\"日期&时间\",\"link\":\"/api/packages/datetime\"},{\"text\":\"文件\",\"link\":\"/api/packages/fileutil\"},{\"text\":\"格式化工具\",\"link\":\"/api/packages/formatter\"},{\"text\":\"函数\",\"link\":\"/api/packages/function\"},{\"text\":\"数学工具\",\"link\":\"/api/packages/mathutil\"},{\"text\":\"Map\",\"link\":\"/api/packages/maputil\"},{\"text\":\"网络\",\"link\":\"/api/packages/netutil\"},{\"text\":\"指针\",\"link\":\"/api/packages/pointer\"},{\"text\":\"随机数\",\"link\":\"/api/packages/random\"},{\"text\":\"重试\",\"link\":\"/api/packages/retry\"},{\"text\":\"切片\",\"link\":\"/api/packages/slice\"},{\"text\":\"流\",\"link\":\"/api/packages/stream\"},{\"text\":\"结构体\",\"link\":\"/api/packages/struct\"},{\"text\":\"字符串\",\"link\":\"/api/packages/strutil\"},{\"text\":\"系统\",\"link\":\"/api/packages/system\"},{\"text\":\"元组\",\"link\":\"/api/packages/tuple\"},{\"text\":\"验证器\",\"link\":\"/api/packages/validator\"},{\"text\":\"错误处理\",\"link\":\"/api/packages/xerror\"}]}]}}},\"en\":{\"label\":\"English\",\"lang\":\"en-US\",\"link\":\"/en/\",\"description\":\"A powerful util function library of Go\",\"head\":[[\"meta\",{\"property\":\"og:url\",\"content\":\"https://golancet.cn\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"A powerful util function library of Go\"}]],\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/duke-git/lancet/edit/v2/docs/:path\",\"text\":\"Suggest changes to this page\"},\"nav\":[{\"text\":\"Home\",\"link\":\"/en/\",\"activeMatch\":\"^/en/\"},{\"text\":\"Guide\",\"link\":\"/en/guide/introduction\",\"activeMatch\":\"^/en/guide/\"},{\"text\":\"API\",\"link\":\"/en/api/overview\",\"activeMatch\":\"^/en/api/\"},{\"text\":\"Links\",\"items\":[{\"text\":\"Discussion\",\"link\":\"https://github.com/duke-git/lancet/discussions\"},{\"text\":\"Changelog\",\"link\":\"https://github.com/duke-git/lancet/releases\"},{\"text\":\"Contribution\",\"link\":\"https://github.com/duke-git/lancet/blob/main/CONTRIBUTING.en-US.md\"}]}],\"sidebar\":{\"/en/\":[{\"text\":\"Introduction\",\"collapsed\":false,\"items\":[{\"text\":\"What is Lancet\",\"link\":\"/en/guide/introduction\"},{\"text\":\"getting started\",\"link\":\"/en/guide/getting_started\"}]}],\"/en/api/\":[{\"text\":\"overview\",\"items\":[{\"text\":\"overview of API\",\"link\":\"/en/api/overview\"}]},{\"text\":\"packages\",\"collapsed\":false,\"items\":[{\"text\":\"algorithm\",\"link\":\"/en/api/packages/algorithm\"},{\"text\":\"compare\",\"link\":\"/en/api/packages/compare\"},{\"text\":\"concurrency\",\"link\":\"/en/api/packages/concurrency\"},{\"text\":\"condition\",\"link\":\"/en/api/packages/condition\"},{\"text\":\"convertor\",\"link\":\"/en/api/packages/convertor\"},{\"text\":\"cryptor\",\"link\":\"/en/api/packages/cryptor\"},{\"text\":\"datastructure\",\"collapsed\":true,\"items\":[{\"text\":\"list\",\"link\":\"/en/api/packages/datastructure/list\"},{\"text\":\"safelist\",\"link\":\"/en/api/packages/datastructure/copyonwritelist\"},{\"text\":\"link\",\"link\":\"/en/api/packages/datastructure/link\"},{\"text\":\"stack\",\"link\":\"/en/api/packages/datastructure/stack\"},{\"text\":\"queue\",\"link\":\"/en/api/packages/datastructure/queue\"},{\"text\":\"heap\",\"link\":\"/en/api/packages/datastructure/heap\"},{\"text\":\"tree\",\"link\":\"/en/api/packages/datastructure/tree\"},{\"text\":\"set\",\"link\":\"/en/api/packages/datastructure/set\"},{\"text\":\"hashmap\",\"link\":\"/en/api/packages/datastructure/hashmap\"}]},{\"text\":\"datetime\",\"link\":\"/en/api/packages/datetime\"},{\"text\":\"fileutil\",\"link\":\"/en/api/packages/fileutil\"},{\"text\":\"formatter\",\"link\":\"/en/api/packages/formatter\"},{\"text\":\"function\",\"link\":\"/en/api/packages/function\"},{\"text\":\"mathutil\",\"link\":\"/en/api/packages/mathutil\"},{\"text\":\"maputil\",\"link\":\"/en/api/packages/maputil\"},{\"text\":\"netutil\",\"link\":\"/en/api/packages/netutil\"},{\"text\":\"pointer\",\"link\":\"/en/api/packages/pointer\"},{\"text\":\"random\",\"link\":\"/en/api/packages/random\"},{\"text\":\"retry\",\"link\":\"/en/api/packages/retry\"},{\"text\":\"slice\",\"link\":\"/en/api/packages/slice\"},{\"text\":\"stream\",\"link\":\"/en/api/packages/stream\"},{\"text\":\"struct\",\"link\":\"/en/api/packages/struct\"},{\"text\":\"strutil\",\"link\":\"/en/api/packages/strutil\"},{\"text\":\"system\",\"link\":\"/en/api/packages/system\"},{\"text\":\"tuple\",\"link\":\"/en/api/packages/tuple\"},{\"text\":\"validator\",\"link\":\"/en/api/packages/validator\"},{\"text\":\"xerror\",\"link\":\"/en/api/packages/xerror\"}]}]}}}},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
</body>
</html>