github.com/benma/gogen@v0.0.0-20160826115606-cf49914b915a/unmarshalmap/testpkg/array_unmarshalmap.go (about)

     1  /*
     2  * CODE GENERATED AUTOMATICALLY WITH github.com/ernesto-jimenez/gogen/unmarshalmap
     3  * THIS FILE SHOULD NOT BE EDITED BY HAND
     4   */
     5  
     6  package testpkg
     7  
     8  import (
     9  	"fmt"
    10  )
    11  
    12  // UnmarshalMap takes a map and unmarshals the fieds into the struct
    13  func (s *Array) UnmarshalMap(m map[string]interface{}) error {
    14  
    15  	// ArrayOrSlice List
    16  
    17  	if v, ok := m["List"].([]string); ok {
    18  
    19  		s.List = make([]string, len(v))
    20  
    21  		for i, el := range v {
    22  			s.List[i] = el
    23  		}
    24  	} else if v, ok := m["List"].([]interface{}); ok {
    25  
    26  		s.List = make([]string, len(v))
    27  
    28  		for i, el := range v {
    29  			if v, ok := el.(string); ok {
    30  				s.List[i] = v
    31  
    32  			} else {
    33  				return fmt.Errorf("expected field List[%d] to be string but got %T", i, el)
    34  			}
    35  		}
    36  	} else if v, exists := m["List"]; exists && v != nil {
    37  		return fmt.Errorf("expected field List to be []string but got %T", m["List"])
    38  	}
    39  
    40  	return nil
    41  }