| package google | |
| import ( | |
| "errors" | |
| "time" | |
| ) | |
| func SearchTimeout(query string, timeout time.Duration) ([]Result, error) { // HL | |
| timer := time.After(timeout) // HL | |
| c := make(chan Result, 3) | |
| go func() { c <- Web(query) }() | |
| go func() { c <- Image(query) }() | |
| go func() { c <- Video(query) }() | |
| var results []Result | |
| for i := 0; i < 3; i++ { | |
| select { // HL | |
| case result := <-c: // HL | |
| results = append(results, result) | |
| case <-timer: // HL | |
| return results, errors.New("timed out") | |
| } | |
| } | |
| return results, nil | |
| // STOP OMIT | |
| } |