【问题标题】:How to convert []interface to []struct [duplicate]如何将 []interface 转换为 []struct [重复]
【发布时间】:2021-05-03 00:48:41
【问题描述】:

例如:

代码: type person struct { //结构 id int 名称字符串 }

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

如何将 pi 转换为 p?

【问题讨论】:

  • for k, v := range pi { p[k] = v //不能使用 'v' (type interface{}) 作为 type person in assignment }
  • 我可以使用类型断言

标签: go struct interface slice


【解决方案1】:

试试这个:

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)
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多