为数据库组件铺路,超好用的 go 集合(collection)库来了

介绍了一个用于数据库组件的高效Go集合库,包括安装和使用指南,助力Web开发。
摘要由CSDN通过智能技术生成

Goal-web/collection

这是一个神奇的仓库
goal-web/collection

安装 - install

go get github.com/goal-web/collection

使用

package tests

import (
	"errors"
	"fmt"
	"github.com/goal-web/collection"
	"github.com/goal-web/contracts"
	"github.com/shopspring/decimal"
	"github.com/stretchr/testify/assert"
	"testing"
)

func TestNew(t *testing.T) {
   
	collect, err := collection.New(1)
	assert.Nil(t, collect)
	assert.Error(t, err, err)

	// 使用 MustNew 的时候,如果参数不是 array 或者 slice 的话,将会 panic
	collect, err = collection.New([]int{
   1})
	assert.NotNil(t, collect)
	assert.Nil(t, err)
}

func TestArray(t *testing.T) {
   
	intCollection := collection.MustNew([]interface{
   }{
   
		1, 2, 3, true, "字符串", "true",
	})
	fmt.Println(intCollection.ToFloat64Array())
	assert.True(t, intCollection.Len() == 6)

	// 第二个参数是数据索引
	intCollection.Map(func(data, index int) {
   
		fmt.Println(fmt.Sprintf("第 %d 个,值:%d", index, data))
	})

	// 第三个参数是所有数据集合
	intCollection.Map(func(data, index int, allData []interface{
   }) {
   
		if index == 0 {
   
			fmt.Println("allData", allData)
		}
		fmt.Println(fmt.Sprintf("第 %d 个,值:%d", index, data))
	})

	// 甚至可以直接转换成你想要的类型
	intCollection.Map(func(data string, index int) {
   
		fmt.Println(fmt.Sprintf("第 %d 个,值:%s", index, data))
	})
	intCollection.Map(func(data bool, index int) {
   
		fmt.Println(fmt.Sprintf("第 %d 个,值:%v", index, data))
	})

	// 不返回任何值表示只遍历
	intCollection.Map(func(data int) {
   
		fmt.Println("只遍历: ", data)
	})
	fmt.Println(intCollection.ToIntArray())

	// 返回一个值会生成一个新的 collection
	fmt.Println(intCollection.Map(func(data int) int {
   
		if data > 0 {
   
			return 1
		}
		return 0
	}).ToIntArray())
}

type User struct {
   
	id    int
	Name  string
	Money float64
}

func TestStructArray(t *testing.T) {
   

	users := collection.MustNew([]User{
   
		{
   id: 1, Name: "qbhy"},
		{
   id: 2, Name: "goal"},
	})

	users.Map(func(user User) {
   
		fmt.Printf(
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值