File tree Expand file tree Collapse file tree 2 files changed +19
-3
lines changed
Expand file tree Collapse file tree 2 files changed +19
-3
lines changed Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ func main() {
3737 fmt .Println (player .Name )
3838
3939 // concurrently get multiple players by tag
40- players , err := client .GetPlayers ("#8QYG8CJ0" , "#Q9RY8YRYJ" )
40+ players , err := client .GetPlayersWithError ("#8QYG8CJ0" , "#Q9RY8YRYJ" )
4141 if err != nil {
4242 panic (err )
4343 }
Original file line number Diff line number Diff line change @@ -197,8 +197,24 @@ func (h *Client) GetPlayer(tag string) (*Player, error) {
197197 return player , err
198198}
199199
200- // GetPlayers makes use of concurrency to get multiple players simultaneously.
201- func (h * Client ) GetPlayers (tags ... string ) (Players , error ) {
200+ // GetPlayers makes use of concurrency to get multiple players simultaneously. Players that failed to be fetched will be nil in the returned slice.
201+ func (h * Client ) GetPlayers (tags ... string ) Players {
202+ var wg sync.WaitGroup
203+ players := make (Players , len (tags ))
204+ for i , tag := range tags {
205+ wg .Add (1 )
206+ go func (i int , tag string ) {
207+ defer wg .Done ()
208+ player , _ := h .GetPlayer (tag )
209+ players [i ] = player
210+ }(i , tag )
211+ }
212+ wg .Wait ()
213+ return players
214+ }
215+
216+ // GetPlayersWithError makes use of concurrency to get multiple players simultaneously. Unlike GetPlayers, this function returns nil and error if any of the players failed to be fetched.
217+ func (h * Client ) GetPlayersWithError (tags ... string ) (Players , error ) {
202218 var wg sync.WaitGroup
203219 players := make (Players , len (tags ))
204220 errChan := make (chan error , len (tags ))
You can’t perform that action at this time.
0 commit comments