go-hep.org/x/hep@v0.38.1/csvutil/csv_example_test.go (about) 1 // Copyright ©2016 The go-hep Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package csvutil 6 7 import ( 8 "fmt" 9 "log" 10 ) 11 12 func Example_readStruct() { 13 fname := "testdata/simple.csv" 14 tbl, err := Open(fname) 15 if err != nil { 16 log.Fatalf("could not open %s: %v\n", fname, err) 17 } 18 defer tbl.Close() 19 tbl.Reader.Comma = ';' 20 tbl.Reader.Comment = '#' 21 22 rows, err := tbl.ReadRows(0, 10) 23 if err != nil { 24 log.Fatalf("could read rows [0, 10): %v\n", err) 25 } 26 defer rows.Close() 27 28 irow := 0 29 for rows.Next() { 30 data := struct { 31 I int 32 F float64 33 S string 34 }{} 35 err = rows.Scan(&data) 36 if err != nil { 37 log.Fatalf("error reading row %d: %v\n", irow, err) 38 } 39 } 40 err = rows.Err() 41 if err != nil { 42 log.Fatalf("error: %v\n", err) 43 } 44 } 45 46 func Example_readSlice() { 47 fname := "testdata/simple.csv" 48 tbl, err := Open(fname) 49 if err != nil { 50 log.Fatalf("could not open %s: %v\n", fname, err) 51 } 52 defer tbl.Close() 53 tbl.Reader.Comma = ';' 54 tbl.Reader.Comment = '#' 55 56 rows, err := tbl.ReadRows(0, 10) 57 if err != nil { 58 log.Fatalf("could read rows [0, 10): %v\n", err) 59 } 60 defer rows.Close() 61 62 irow := 0 63 for rows.Next() { 64 var ( 65 I int 66 F float64 67 S string 68 ) 69 err = rows.Scan(&I, &F, &S) 70 if err != nil { 71 log.Fatalf("error reading row %d: %v\n", irow, err) 72 } 73 } 74 err = rows.Err() 75 if err != nil { 76 log.Fatalf("error: %v\n", err) 77 } 78 } 79 80 func Example_writeStruct() { 81 fname := "out.csv" 82 tbl, err := Create(fname) 83 if err != nil { 84 log.Fatalf("could not create %s: %v\n", fname, err) 85 } 86 defer tbl.Close() 87 tbl.Writer.Comma = ';' 88 89 err = tbl.WriteHeader("## a simple set of data: int64;float64;string\n") 90 if err != nil { 91 log.Fatalf("error writing header: %v\n", err) 92 } 93 94 for i := range 10 { 95 data := struct { 96 I int 97 F float64 98 S string 99 }{ 100 I: i, 101 F: float64(i), 102 S: fmt.Sprintf("str-%d", i), 103 } 104 err = tbl.WriteRow(data) 105 if err != nil { 106 log.Fatalf("error writing row %d: %v\n", i, err) 107 } 108 } 109 110 err = tbl.Close() 111 if err != nil { 112 log.Fatalf("error closing table: %v\n", err) 113 } 114 } 115 116 func Example_writeSlice() { 117 fname := "out.csv" 118 tbl, err := Create(fname) 119 if err != nil { 120 log.Fatalf("could not create %s: %v\n", fname, err) 121 } 122 defer tbl.Close() 123 tbl.Writer.Comma = ';' 124 125 err = tbl.WriteHeader("## a simple set of data: int64;float64;string\n") 126 if err != nil { 127 log.Fatalf("error writing header: %v\n", err) 128 } 129 130 for i := range 10 { 131 var ( 132 f = float64(i) 133 s = fmt.Sprintf("str-%d", i) 134 ) 135 err = tbl.WriteRow(i, f, s) 136 if err != nil { 137 log.Fatalf("error writing row %d: %v\n", i, err) 138 } 139 } 140 141 err = tbl.Close() 142 if err != nil { 143 log.Fatalf("error closing table: %v\n", err) 144 } 145 }