Quick Start - zhoudm1743/go-util GitHub Wiki

欢迎使用 Go-Util!本指南将帮助您在 5 分钟内开始使用这个强大的工具库。

🚀 安装

# 安装核心库
go get github.com/zhoudm1743/go-util

# 可选:安装独立包
go get github.com/zhoudm1743/go-util/jsonx
go get github.com/zhoudm1743/go-util/jwt

⚡ 第一个示例

package main

import (
    "fmt"
    util "github.com/zhoudm1743/go-util"
)

func main() {
    // 🔤 字符串操作
    result := util.Str("hello_world_go").
        Snake2BigCamel().     // "HelloWorldGo"
        Lower().              // "helloworldgo"
        FirstUpper().         // "Helloworldgo"
        String()
    fmt.Println(result)
    
    // 📊 数组操作
    numbers := util.Arrays(1, 2, 3, 4, 5).
        Filter(func(n int) bool { return n%2 == 0 }). // [2, 4]
        Map(func(n int) int { return n * 3 }).        // [6, 12]
        ToSlice()
    fmt.Println(numbers)
    
    // ⏰ 时间操作
    now := util.Now()
    future := now.AddDays(7).FormatChinese()
    fmt.Printf("一周后: %s\n", future)
}

🎯 核心概念

链式调用

Go-Util 的核心设计理念是链式调用,让代码更优雅:

// 传统写法
users := []User{...}
activeUsers := []User{}
for _, user := range users {
    if user.IsActive {
        activeUsers = append(activeUsers, user)
    }
}
emails := []string{}
for _, user := range activeUsers {
    if isValidEmail(user.Email) {
        emails = append(emails, user.Email)
    }
}
sort.Strings(emails)

// Go-Util 链式写法
emails := util.Array(users).
    Filter(func(u User) bool { return u.IsActive }).
    Map(func(u User) string { return u.Email }).
    Filter(func(email string) bool { return util.Str(email).IsEmail() }).
    Sort().
    ToSlice()

类型安全

利用 Go 1.18+ 的泛型特性,提供编译时类型检查:

numbers := util.Arrays(1, 2, 3, 4, 5)     // XArray[int]
strings := util.Arrays("a", "b", "c")     // XArray[string]

// 编译时错误检查
result := numbers.Map(func(n int) string { 
    return fmt.Sprintf("num_%d", n) 
})  // XArray[string]

📖 下一步

🆘 需要帮助?