jaswdr / faker

:rocket: Ultimate fake data generator for Go with zero dependencies
https://pkg.go.dev/github.com/jaswdr/faker
MIT License
566 stars 59 forks source link

add: random element and weighted random element. #170

Closed arshamalh closed 6 months ago

arshamalh commented 6 months ago

Description

Currently, there are RandomStringElement and RandomIntElement methods in the package, but what happens if e.g. we want to select one of the users that are of type type User struct{...}, we may need a generic random select function and that's the reason I implemented RandomElement function.

Also, what happens if we want to give more chances to some elements? I added RandomElementWeighted for that purpose.

Unfortunately, due to golang lack of support for typed parameters, these new two functions couldn't be methods and are implemented as functions taking Faker as argument (not receiver).


There was also a small change in time.ISO8601 function for how we format the time, as mentioned in this pkg

Are you trying to fix an existing issue? No

Go Version

$ go version
go version go1.22.2 darwin/arm64

Go Tests Runned on pipeline

$ go test
ok      github.com/jaswdr/faker/v2  2.833s
jaswdr commented 6 months ago

LGTM, thank you very much @arshamalh for your PR, I released your changes under v2.2.0