Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "encoding/csv"
  5. "fmt"
  6. "io"
  7. "log"
  8. "os"
  9. "time"
  10. )
  11.  
  12. func main() {
  13.  
  14. start := time.Now()
  15.  
  16. strS := make(chan string)
  17. errorme := make(chan error)
  18. done := make(chan bool)
  19.  
  20. go readercsv("./50000-Sales-Records.csv", strS, errorme, done)
  21.  
  22. loop:
  23. for {
  24. select {
  25. case ss := <-strS:
  26. fmt.Println(ss)
  27.  
  28. case err := <-errorme:
  29. log.Fatal(err)
  30. case <-done:
  31. break loop
  32.  
  33. }
  34.  
  35. }
  36.  
  37. fmt.Println(time.Since(start))
  38. // estimasi 227 millisecond
  39.  
  40. // kodenya kacau!!
  41.  
  42. }
  43.  
  44. func readercsv(filepath string, s chan string, errorme chan error, done chan bool) {
  45. csvfile, err := os.Open(filepath)
  46. if err != nil {
  47. errorme <- err
  48. }
  49.  
  50. reader := csv.NewReader(csvfile)
  51.  
  52. tel := make(chan string)
  53. for {
  54. go func() {
  55. record, err := reader.Read()
  56. if err == io.EOF {
  57. done <- true
  58. }
  59.  
  60. if err != nil {
  61. errorme <- err
  62. }
  63.  
  64. tel <- fmt.Sprintf(record[2])
  65.  
  66. }()
  67.  
  68. select {
  69. case v := <-tel:
  70. s <- v
  71. }
  72. }
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement