Here are screenshots and code samples from the article:
Go READ example
package main import ( "encoding/csv" "fmt" "io" "os" "time" ) type InfileRec struct { ib1 string ib2 string ib3 string ib4 string ib5 string ib6 string ib7 string ib8 string ib9 string ib10 string ib11 string ib12 string } func main() { start := time.Now() fmt.Printf("Begin GO run of LANGCOMP2 @ %s\n", start) csvfile, err := os.Open("star.csv") if err != nil { fmt.Println(err) return } defer csvfile.Close() // sets up the file close upon exit of the function reader := csv.NewReader(csvfile) reader.FieldsPerRecord = -1 // sets number of fields be record variable var ( record []string InputBuffer InfileRec kount uint32 = 0 ) for err == nil { record, err = reader.Read() kount += 1 if len(record) == 12 { InputBuffer.ib1 = record[0] InputBuffer.ib2 = record[1] InputBuffer.ib3 = record[2] InputBuffer.ib4 = record[3] InputBuffer.ib5 = record[4] InputBuffer.ib6 = record[5] InputBuffer.ib7 = record[6] InputBuffer.ib8 = record[7] InputBuffer.ib9 = record[8] InputBuffer.ib10 = record[9] InputBuffer.ib11 = record[10] InputBuffer.ib12 = record[11] } } if err != nil && err != io.EOF { fmt.Println(err) os.Exit(1) } end := time.Now() fmt.Println(kount, " Records read ") fmt.Printf("Normal termination of LANGCOMP2 @ %s\n", end) duration := end.Sub(start) fmt.Printf("Elapsed time: %s\n", duration) }
Go READALL example:
package main import ( "time" "encoding/csv" "fmt" "os" ) type InfileRec struct { ib1 string ib2 string ib3 string ib4 string ib5 string ib6 string ib7 string ib8 string ib9 string ib10 string ib11 string ib12 string } func main() { start := time.Now() fmt.Printf("Begin GO run of LANGCOMP @ %s\n", start) csvfile, err := os.Open("star.csv") if err != nil { fmt.Println(err) return } defer csvfile.Close() // sets up the file close upon exit of the function reader := csv.NewReader(csvfile) reader.FieldsPerRecord = -1 // sets number of fields be record variable rawCSVdata, err := reader.ReadAll() if err != nil { fmt.Println(err) os.Exit(1) } var kount uint32 = 0 var InputBuffer InfileRec for _, each := range rawCSVdata { kount += 1 InputBuffer.ib1 = each[0] InputBuffer.ib2 = each[1] InputBuffer.ib3 = each[2] InputBuffer.ib4 = each[3] InputBuffer.ib5 = each[4] InputBuffer.ib6 = each[5] InputBuffer.ib7 = each[6] InputBuffer.ib8 = each[7] InputBuffer.ib9 = each[8] InputBuffer.ib10 = each[9] InputBuffer.ib11 = each[10] InputBuffer.ib12 = each[11] } end := time.Now() fmt.Println(kount, " Records read ") fmt.Printf("Normal termination of LANGCOMP @ %s\n", end) duration := end.Sub(start) fmt.Printf("Elapsed time: %s\n", duration) }