Advertisement
Guest User

Untitled

a guest
Apr 25th, 2015
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "reflect"
  6. )
  7.  
  8. type Model interface {
  9. GetHello()
  10. }
  11.  
  12. type Orders struct {
  13. Id int64
  14. }
  15.  
  16. func (o Orders) GetHello() {
  17. fmt.Println("Hello")
  18. }
  19.  
  20. func resSliceOrders(inf interface{}) string {
  21. switch t := inf.(type) {
  22. case []Orders:
  23. return "[]Orders"
  24. case *[]Orders:
  25. *t = append(*t, Orders{Id: 77})
  26. *t = append(*t, Orders{Id: 88})
  27.  
  28. return "this is it *[]Orders"
  29. default:
  30. return fmt.Sprintf("%+v\n", t)
  31. }
  32.  
  33. return ""
  34. }
  35.  
  36. func populate(m ...Model) error {
  37. var err error
  38. for _, x := range m {
  39. // Create a slice to begin with
  40. myType := reflect.TypeOf(x)
  41. slice := reflect.MakeSlice(reflect.SliceOf(myType), 0, 0)
  42.  
  43. // Create a pointer to a slice value and set it to the slice
  44. x := reflect.New(slice.Type())
  45. x.Elem().Set(slice)
  46.  
  47. objSlice := x.Interface()
  48. fmt.Println(resSliceOrders(objSlice))
  49. fmt.Printf("%+v\n", objSlice)
  50. }
  51. return err
  52. }
  53. func main() {
  54.  
  55. populate(Orders{})
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement