Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "reflect"
- )
- type Model interface {
- GetHello()
- }
- type Orders struct {
- Id int64
- }
- func (o Orders) GetHello() {
- fmt.Println("Hello")
- }
- func resSliceOrders(inf interface{}) string {
- switch t := inf.(type) {
- case []Orders:
- return "[]Orders"
- case *[]Orders:
- *t = append(*t, Orders{Id: 77})
- *t = append(*t, Orders{Id: 88})
- return "this is it *[]Orders"
- default:
- return fmt.Sprintf("%+v\n", t)
- }
- return ""
- }
- func populate(m ...Model) error {
- var err error
- for _, x := range m {
- // Create a slice to begin with
- myType := reflect.TypeOf(x)
- slice := reflect.MakeSlice(reflect.SliceOf(myType), 0, 0)
- // Create a pointer to a slice value and set it to the slice
- x := reflect.New(slice.Type())
- x.Elem().Set(slice)
- objSlice := x.Interface()
- fmt.Println(resSliceOrders(objSlice))
- fmt.Printf("%+v\n", objSlice)
- }
- return err
- }
- func main() {
- populate(Orders{})
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement