func ExampleTypeRegistry_New() { registry := typeregistry.New() name := registry.Add(simpleThing{}) thing := registry.New(name) fmt.Printf("%#v", thing) // Output: typeregistry_test.simpleThing{Name:""} }
func ExampleTypeRegistry_Unmarshal() { registry := typeregistry.New() registry.Add(&userThing{}) // The service world. var ( ryan = &User{"1", "Ryan"} svc = &UserService{[]*User{ryan}} sample = &userThing{user: ryan} ) // Pass between marshal and unmarshal. var ( name string data []byte ) // Marshal it. func() { var err error name, data, err = registry.Marshal(sample) if err != nil { panic(err) } fmt.Printf("Sample marshaled name:%s data:%s\n", name, data) }() // Unmarshal it with custom setup. func() { si, err := registry.Unmarshal(name, data, func(o interface{}) { if s, ok := o.(*userThing); ok { s.svc = svc } }) if err != nil { panic(err) } sample := si.(*userThing) fmt.Printf("Sample unmarshaled with ID:%s, Name:%s\n", sample.UserID, sample.user.Name) }() // Output: // Sample marshaled name:*typeregistry_test.userThing data:{"UserID":"1"} // Sample unmarshaled with ID:1, Name:Ryan }