diff --git a/types/data.go b/types/data.go index a38f29c..61f3d0a 100644 --- a/types/data.go +++ b/types/data.go @@ -116,6 +116,33 @@ func (data Data) MustGetIntSlice(key string) []int { return values } +// GetDataSlice 取得資料切片 +func (data Data) GetDataSlice(key string) ([]Data, error) { + values, err := data.GetSlice(key) + if err != nil { + return nil, err + } + + var vals []Data + for _, v := range values { + switch v.(type) { + case map[string]interface{}: + val := v.(map[string]interface{}) + vals = append(vals, Data(val)) + default: + return nil, ErrFormat + } + } + + return vals, nil +} + +// MustGetDataSlice 強制取得資料切片 +func (data Data) MustGetDataSlice(key string) []Data { + values, _ := data.GetDataSlice(key) + return values +} + // GetInt64 取得64位元整數 func (data Data) GetInt64(key string) (int64, error) { value, err := data.Get(key)