V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
wwaayyaa

go-collection 基于泛型,链式调用的数据集合处理工具

  •  
  •   wwaayyaa · Mar 22, 2022 · 2308 views
    This topic created in 1509 days ago, the information mentioned may be changed or developed.

    项目地址: https://github.com/wwaayyaa/go-collection

    如果用过 laravel collection ,js lodash 、underscore 基本上就知道这个包想干啥了。

    相信每一位 go 开发者都遇到过这种情况: 同样的循环,同样的逻辑,只是不同的入参[]int/[]string/[]interface{}。但是我们要写 N 个方法去分别处理这些数据,现在有了泛型,我们就可以轻松一点了。

    其实类似的项目也有,不过我最喜欢还是 collection 的使用风格,所以在 1.18 正式发布之际,写了个基于泛型的工具。

    
    //对称差级
    expected := map[string]int{"b": 2, "c": 3}
    
    actual := NewMapCollection(map[string]int{"a": 1, "b": 2}).SymmetricDiff(map[string]int{"a": 1, "c": 3}).All()
    
    assert.Equal(t, expected, actual)
    
    
    
    //对称差集 = 相互的差集再并集
    func (co *MapCollection[K, V]) SymmetricDiff(items map[K]V) *MapCollection[K, V] {
    	return co.Diff(items).Union(NewMapCollection(items).Diff(co.items).All())
    }
    
    
    3 replies    2022-03-22 15:53:16 +08:00
    sunwei0325
        1
    sunwei0325  
       Mar 22, 2022
    其实已经有一个这种轮子了

    https://github.com/samber/lo
    wwaayyaa
        2
    wwaayyaa  
    OP
       Mar 22, 2022
    @sunwei0325 是的,不过使用风格有一点不一样,所以按照自己更喜欢的方式撸。
    G2bN4dbX9J3ncp0r
        3
    G2bN4dbX9J3ncp0r  
       Mar 22, 2022
    go 社区类似的轮子真多
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2504 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:30 · PVG 08:30 · LAX 17:30 · JFK 20:30
    ♥ Do have faith in what you're doing.