Search code examples
gostructinterfaceslice

How to convert []interface to []struct


For example, this code:

type person struct { //struct
  id   int
  name string
}

func example()  {
  var (
      p []person
      pi []interface{}
  )
  pi = append(pi, person{
      id:   1,
      name: "Mike",
  })
}

How to convert pi to p?


Solution

  • try this one:

    package main
    
    import (
        "fmt"
    )
    
    type person struct { //struct
        id   int
        name string
    }
    
    func main() {
        var (
            p  []person
            pi []interface{}
        )
        pi = append(pi, person{
            id:   1,
            name: "Mike",
        })
        for _, tmp := range pi {
             // fmt.Println(tmp,k)
             p = append(p, tmp.(person))
             fmt.Println( p)
        }
    
    }