golang,go,博客,开源,编程

golang每日一库之工具库viant/toolbox

Updated on with 0 views and 0 comments

viant/toolbox 是一个由 Viant 开发的功能丰富的 Go 工具库,它集合了大量常用的实用工具函数,涵盖字符串、时间、反射、文件、HTTP、配置处理等多个方面,是“工具人”写项目时不可多得的瑞士军刀型库。


一句话总结

toolbox 是一个“啥都能干点”的 Go 通用工具库,适合需要各种小功能支持但又不想一一造轮子的开发者。


包结构

它的模块设计清晰,大致可以分为以下几个子包:

包名用途介绍
collection集合操作辅助,如 SetLinkedList
format格式化辅助,如模板渲染、SQL 拼接等
secret加解密相关(对称/非对称加密)
storage抽象存储接口,支持本地和云存储(如 GCS)
conversion类型转换工具
reader多种数据源读取能力(支持 CSV、JSON、INI 等)
fileutil文件与目录操作
process外部进程启动与管理
shellShell 命令封装执行
urlURL 构建、解析等
reflect反射封装工具
data数据处理,如 Map/Struct 转换等
assert简易测试断言工具
httpHTTP 请求辅助封装
path路径拼接、模式匹配等
config配置读取与动态更新

功能介绍和🌰

1. 类型转换 conversion

import "github.com/viant/toolbox/conversion"

val, err := conversion.ToInt("42")
fmt.Println(val) // 输出:42

支持常见类型之间的安全转换,能帮你少写很多 strconv.Itoa()strconv.ParseFloat()


2. 文件操作 fileutil

import "github.com/viant/toolbox/fileutil"

exists := fileutil.FileExists("config.yaml")
fmt.Println("文件是否存在:", exists)

除了判断文件/目录是否存在,还支持:

  • 递归创建目录
  • 写入/读取文本内容
  • 删除文件/目录

3. 反射辅助 reflect

import "github.com/viant/toolbox/reflect"

type User struct {
	Name string
	Age  int
}

user := &User{}
reflect.SetField(user, "Name", "张三")
reflect.SetField(user, "Age", 18)

fmt.Printf("%+v\n", user) // 输出:{Name:张三 Age:18}

直接通过字符串操作结构体字段,极其方便做配置绑定、对象动态处理。


4. 数据结构 Map/Struct 转换 data

import "github.com/viant/toolbox/data"

user := map[string]interface{}{
	"name": "小明",
	"age":  30,
}

jsonText, _ := data.AsJSON(user, true)
fmt.Println(string(jsonText))

也可以将 JSON 字符串转成 map 或者任意结构体。


5. 配置加载 config + reader

import (
	"github.com/viant/toolbox/config"
)

var cfg struct {
	Port int `config:"port"`
}

_ = config.Load(&cfg, "config.yaml")
fmt.Println(cfg.Port)

支持从 YAML、JSON、ENV 等文件/环境变量加载配置,并绑定到结构体。


6. HTTP 简化请求 http

import toolboxHttp "github.com/viant/toolbox/http"

response, err := toolboxHttp.NewHttpClient().Get("https://httpbin.org/get")
fmt.Println(response.StatusCode)

简化了 HTTP 请求构建、响应解析的过程,适合快速调 API。


7. 启动外部进程 process

import "github.com/viant/toolbox/process"

proc, err := process.NewProcess("ls", "-la")
out, err := proc.Output()
fmt.Println(string(out))

支持进程输出抓取、异步启动等,适合执行 CLI 工具或脚本。


安装

go get github.com/viant/toolbox


标题:golang每日一库之工具库viant/toolbox
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/06/06/1749177063786.html
联系:scotttu@163.com