github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/types/table2map.go (about) 1 package types 2 3 import "fmt" 4 5 func Table2Map(v [][]string, callback func(map[string]any) error) error { 6 var ( 7 err error 8 //m = make(map[string]interface{}, len(v[0])) 9 j int 10 recLen = len(v[0]) 11 ) 12 13 for i := 1; i < len(v); i++ { 14 if len(v[i]) != recLen { 15 return fmt.Errorf("row %d has a different number of records to row 0:\nrow 0: %d (headings)\nrow %d: %d (records)", 16 i, recLen, i, len(v[i])) 17 } 18 19 m := make(map[string]any) 20 for j = 0; j < recLen; j++ { 21 m[v[0][j]] = v[i][j] 22 } 23 24 err = callback(m) 25 if err != nil { 26 return err 27 } 28 } 29 30 return nil 31 }