golang提供类似lodash的语法糖工具库插件gubrak的使用

Golang提供类似Lodash的语法糖工具库插件Gubrak的使用

Gubrak是一个Go语言的功能性工具库,提供了类似Lodash的语法糖功能。

安装

Gubrak最新版本是v2,可以通过以下方式安装:

  1. 对于基于Go Mod的项目:
go get -u github.com/novalagung/gubrak/v2
  1. 对于基于$GOPATH的项目:
go get -u github.com/novalagung/gubrak

使用

根据项目类型导入方式不同:

  1. 对于基于Go Mod的项目:
import gubrak "github.com/novalagung/gubrak/v2"
  1. 对于基于$GOPATH的项目:
import "github.com/novalagung/gubrak"

示例代码

下面是一个简单的Hello World示例,展示如何使用Gubrak:

package main

import (
	"fmt"
	gubrak "github.com/novalagung/gubrak/v2"
)

func main() {
	// 使用Gubrak的RandomString函数生成随机字符串
	randomString, _ := gubrak.RandomString(10)
	fmt.Println("随机字符串:", randomString)

	// 使用Map函数处理数组
	numbers := []int{1, 2, 3, 4, 5}
	doubled, _ := gubrak.Map(numbers, func(num int) int {
		return num * 2
	})
	fmt.Println("数组加倍:", doubled)

	// 使用Filter函数过滤数组
	evens, _ := gubrak.Filter(numbers, func(num int) bool {
		return num%2 == 0
	})
	fmt.Println("偶数:", evens)

	// 使用Chunk函数将数组分块
	chunks, _ := gubrak.Chunk(numbers, 2)
	fmt.Println("分块结果:", chunks)
}

可用API

Gubrak提供了丰富的功能函数,包括但不限于:

  • 数组操作:Chunk, Compact, Concat, Count, Difference, Drop, DropRight
  • 遍历:Each, EachRight, ForEach, ForEachRight
  • 查找:Find, FindIndex, FindLast, FindLastIndex
  • 转换:Map, Reduce, Filter, Reject
  • 排序:OrderBy, SortBy
  • 随机:RandomInt, RandomString
  • 类型判断:IsArray, IsBool, IsFloat, IsInt, IsString
  • 其他实用工具:Now, Size, Shuffle, Reverse

测试

可以使用以下命令运行测试:

go test -cover -race -v ./...

贡献

欢迎贡献代码:Fork ➜ Create branch ➜ Commit ➜ Push ➜ Pull Requests

许可证

MIT License


更多关于golang提供类似lodash的语法糖工具库插件gubrak的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang提供类似lodash的语法糖工具库插件gubrak的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang中的Lodash风格工具库:gubrak

gubrak是一个受Lodash启发的Golang实用工具库,提供了类似Lodash的链式调用和函数式编程风格。下面我将介绍gubrak的主要功能和使用方法。

安装gubrak

go get github.com/novalagung/gubrak/v2

基本使用示例

1. 链式调用

package main

import (
	"fmt"
	"github.com/novalagung/gubrak/v2"
)

func main() {
	result := gubrak.From([]int{1, 2, 3, 4, 5}).
		Filter(func(each int) bool { return each%2 == 0 }).
		Map(func(each int) int { return each * 2 }).
		Result()

	fmt.Println(result) // 输出: [4 8]
}

2. 常用集合操作

package main

import (
	"fmt"
	"github.com/novalagung/gubrak/v2"
)

func main() {
	// 过滤
	filtered := gubrak.Filter([]int{1, 2, 3, 4}, func(x int) bool { return x > 2 }).([]int)
	fmt.Println(filtered) // [3 4]

	// 映射
	mapped := gubrak.Map([]int{1, 2, 3}, func(x int) int { return x * 2 }).([]int)
	fmt.Println(mapped) // [2 4 6]

	// 归约
	sum := gubrak.Reduce([]int{1, 2, 3}, func(acc, x int) int { return acc + x }, 0).(int)
	fmt.Println(sum) // 6

	// 查找
	found := gubrak.Find([]string{"a", "b", "c"}, func(x string) bool { return x == "b" }).(string)
	fmt.Println(found) // "b"
}

3. 对象操作

package main

import (
	"fmt"
	"github.com/novalagung/gubrak/v2"
)

func main() {
	// 对象键值映射
	user := map[string]interface{}{
		"name": "John",
		"age":  30,
	}
	
	// 获取所有键
	keys := gubrak.Keys(user).([]string)
	fmt.Println(keys) // ["name" "age"]
	
	// 获取所有值
	values := gubrak.Values(user).([]interface{})
	fmt.Println(values) // ["John" 30]
	
	// 对象映射
	userWithTitle := gubrak.MapValues(user, func(value interface{}, key string) interface{} {
		if key == "name" {
			return "Mr. " + value.(string)
		}
		return value
	}).(map[string]interface{})
	fmt.Println(userWithTitle) // map[age:30 name:Mr. John]
}

4. 实用函数

package main

import (
	"fmt"
	"github.com/novalagung/gubrak/v2"
)

func main() {
	// 随机数
	random := gubrak.RandomInt(1, 100).(int)
	fmt.Println(random) // 1-100之间的随机数

	// 去重
	unique := gubrak.Uniq([]int{1, 2, 2, 3}).([]int)
	fmt.Println(unique) // [1 2 3]

	// 分组
	grouped := gubrak.GroupBy([]string{"apple", "banana", "avocado"}, func(x string) string {
		return string(x[0]) // 按首字母分组
	}).(map[string][]string)
	fmt.Println(grouped) // map[a:[apple avocado] b:[banana]]
}

与Lodash的主要区别

  1. 类型安全:Golang是静态类型语言,gubrak需要在运行时进行类型断言
  2. 函数式风格受限:由于Golang的函数式特性不如JavaScript灵活,某些操作会更冗长
  3. 性能考虑:gubrak的实现更注重类型安全和性能,而非完全模仿Lodash的API

总结

gubrak为Golang开发者提供了类似Lodash的实用工具函数,虽然由于语言差异无法完全复制Lodash的所有功能,但它仍然是Golang中进行集合操作和数据转换的强大工具。对于熟悉Lodash的开发者来说,gubrak可以大大提升开发效率。

更多详细用法可以参考gubrak的GitHub仓库

回到顶部