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  }