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  }