| // Copyright 2019 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package a | |
| import ( | |
| "errors" | |
| "strings" | |
| ) | |
| var G interface{} | |
| func Unmarshal(data []byte, o interface{}) error { | |
| G = o | |
| v, ok := o.(*map[string]interface{}) | |
| if !ok { | |
| return errors.New("eek") | |
| } | |
| vals := make(map[string]interface{}) | |
| s := string(data) | |
| items := strings.Split(s, " ") | |
| var err error | |
| for _, item := range items { | |
| vals[item] = s | |
| if item == "error" { | |
| err = errors.New("ouch") | |
| } | |
| } | |
| *v = vals | |
| return err | |
| } |