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 }