Golang, a proper way to rewind file pointer : <pre><code>package main

import (
    "bufio"
    "encoding/csv"
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    data, err := os.Open("cc.csv")
    defer data.Close()
    if err != nil {
        log.Fatal(err)
    }

    s := bufio.NewScanner(data)
    for s.Scan() {
        fmt.Println(s.Text())
        if err := s.Err(); err != nil {
            panic(err)
        }
    }
    // Is it a proper way?
    data.Seek(0, 0)
    r := csv.NewReader(data)

    for {
        if record, err := r.Read(); err == io.EOF {

            break
        } else if err != nil {
            log.Fatal(err)
        } else {
            fmt.Println(record)
        }

    }
}
</code></pre>

<p>I use two readers here to read from a csv file.
To rewind a file I use  <code>data.Seek(0, 0)</code> is it a good way? Or it's better to close the file and open again before second reading.</p>

<p>Is it also correct to use <code>*File</code> as an <code>io.Reader</code> ? Or it's better to do <code>r := ioutil.NewReader(data)</code> </p>
