Comments (5)
@bsideup hmm, I am not sure I understood what's going on from the code. Can you please elaborate?
from go-linq.
@ahmetalpbalkan yes, I will try :)
Currently what we have in Go-linq:
We receive func with T (aka interface{}) signature, then users almost always perform casting:
over18Names, err := From(students)
.Where(func (s T) (bool,error){
return s.(*Student).age >= 18, nil
})
.Select(func (s T) (T,error){
return s.(*Student).name, nil
}).Results()
But, since casting is a must, we can move it into the go-linq and allow users to specify type on func's signature, so this code will look like this:
over18Names, err := From(students)
.Where(func (s Student) (bool,error){
return s.age >= 18, nil
})
.Select(func (s Student) (T,error){
return s.name, nil
}).Results()
Technically it's possible with reflection. I you want I can implement it and send as a pull request :)
from go-linq.
@bsideup ooh interesting. What would be the method signatures for Where
/Select
in this case?
from go-linq.
@bsideup If you're still interested, I'd love to see a prototype. It appears like this would make these methods accept interface{}
rather than []linq.T
. I have a feeling like this would make the caller code cleaner although it'll probably make it a bit harder to use for the first time, but then we have errors etc to handle that. Feel free to send something over to discuss if you like.
from go-linq.
@ahmetalpbalkan sorry for no response for a long time, was busy a little bit
actually, I did some research, and it looks like reflection will affect performance :(
Also, I found this great post about it:
http://blog.burntsushi.net/type-parametric-functions-golang/
from go-linq.
Related Issues (20)
- Append方法优化
- "GroupBy has better performance than GroupByT" is written on the document,why?
- ToChannelT release? HOT 2
- why union.go file doesn't have func UnionBy like the func IntersectBy in intersect.go
- Why `ToSlice` need a custom grow strategy instead of the standard library? HOT 1
- runtime error: hash of unhashable type map[string]interface {} HOT 9
- Unit test ExampleOrderedQuery_ThenByDescending fails on golang-1.19.2 HOT 6
- sort result is unexpected HOT 1
- How to implement the full join function of SQL
- new generic functions type HOT 1
- 转换错误 HOT 1
- I expect the data queried using gorm to be converted using go-linq HOT 1
- bug in WhereIndexed HOT 7
- Article comparing performance of go-linq vs others HOT 4
- gopkg.in/ahmetb/go-linq.v3: gopkg.in/ahmetb/[email protected]: parsing go.mod: module declares its path as: github.com/ahmetb/go-linq/v3 but was required as: gopkg.in/ahmetb/go-linq.v3 HOT 5
- how about add parameter timeout for FromChannelT?
- Try out the new Go generics proposal with go-linq HOT 14
- Is it safe to copy in multiple concurrency HOT 2
- How to implement complex SQL functions HOT 5
- PLINQ support HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-linq.