github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2015/go-for-java-programmers/google-serial.go (about) 1 // +build OMIT 2 3 package main 4 5 import ( 6 "fmt" 7 "math/rand" 8 "time" 9 ) 10 11 type Result string 12 13 // START1 OMIT 14 func Google(query string) (results []Result) { 15 results = append(results, Web(query)) 16 results = append(results, Image(query)) 17 results = append(results, Video(query)) 18 return 19 } 20 21 // STOP1 OMIT 22 23 // START2 OMIT 24 var ( 25 Web = fakeSearch("web") 26 Image = fakeSearch("image") 27 Video = fakeSearch("video") 28 ) 29 30 type Search func(query string) Result // HL 31 32 func fakeSearch(kind string) Search { 33 return func(query string) Result { 34 time.Sleep(time.Duration(rand.Intn(100)) * time.Millisecond) 35 return Result(fmt.Sprintf("%s result for %q\n", kind, query)) 36 } 37 } 38 39 // STOP2 OMIT 40 41 func init() { 42 rand.Seed(time.Now().UnixNano()) 43 } 44 45 func main() { 46 start := time.Now() 47 results := Google("golang") // HL 48 elapsed := time.Since(start) 49 fmt.Println(results) 50 fmt.Println(elapsed) 51 }