lancet 工具库
阅读提示
- 适用版本:Go 1.21+(示例在 Go 1.22 下验证)· 前置知识:语法基础-切片 · 阅读时长:约 10 分钟
文档地址:lancet/README_zh-CN.md at main · duke-git/lancet · GitHub
仓库地址:duke-git/lancet: A comprehensive, efficient, and reusable util function library of Go. (github.com)
简介
lancet译为柳叶刀,是一个通用的工具库,包含有并发,网络,文件,时间,类型转换等等工具库。其代码复杂度不高,将平时频繁使用的功能进行了封装,所以在使用的同时lancet对于刚学习Go的人来说是一个很好的学习对象。
使用
TIP
官方的中文文档已经很详细了,并且配有完整的代码示例,所以这里不再赘述如何使用。
完整示例
下面的程序可以直接运行:复制到文件后执行 go run main.go,或粘贴到 Go Playground 运行。
go
package main
import (
"fmt"
"strings"
)
func firstNonEmpty(vals ...string) string {
for _, v := range vals {
if v != "" {
return v
}
}
return ""
}
func main() {
// 常见的 lancet 工具函数,这里用标准库等价实现
nums := []int{1, 2, 3, 4}
sum := 0
for _, n := range nums {
sum += n
}
fmt.Println("sum:", sum)
fmt.Println("contains:", strings.Contains("golang", "go"))
fmt.Println("first non-empty:", firstNonEmpty("", "", "fallback"))
}预期输出:
text
sum: 10
contains: true
first non-empty: fallback常见错误与踩坑
- 注意参数顺序。 切片工具常是
(slice, func);顺序写反能编译但行为不对。 - 优先用泛型版本。 新版 lancet 已泛型化,老代码可能有按类型分身的函数。
- 别为一个函数引入整个工具库。 标准库或十行代码往往就够了。
- 注意分配。
Filter之类会生成新切片,大输入要基准测试。 - 读文档确认边界。 空输入、nil 切片与带副作用的闭包行为都有细节。
更新记录
- 2026-10-14:新增"阅读提示"、完整可运行示例(含预期输出)、常见错误与踩坑清单,以及本更新记录。
