gpt4 book ai didi

Golang 将 map[string]*[]interface{} 转换为其他类型的 slice 或数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:00 25 4
gpt4 key购买 nike

我有以下内容

type Results map[string]*[]interface{}

var users *[]models.User
users = getUsers(...)

results := Results{}
results["users"] = users

稍后,id 希望能够从此 map 中获取 users 并将其转换为 *[]models.User

我很难找到执行此操作的正确方法。我想做以下,但显然行不通。

var userResults *[]models.User
userResults = (*results["users").(*[]models.User)

知道如何做到这一点吗?

最佳答案

除了转换之外,这里还有一些关于您的代码的注释(也将在最后解决)。

  • 在这种情况下没有真正需要使用指向 slice 的指针,因为 slice 只是指向底层数组的 header 值。因此 slice 值将用作对底层数组的引用。
  • 由于 interface{} 变量可以引用任何类型的值(包括 slice ),因此无需在 中使用 interface{} slice 结果,您可以将其定义为type Results map[string]interface{}

话虽如此,修改后的代码如下所示:

var users []User
users = getUsers()

results := Results{}
results["users"] = users

fmt.Println(results)

var userResults []User
userResults = results["users"].([]User)

fmt.Println(userResults)

您可以在这个 playground 中找到完整的代码:

https://play.golang.org/p/zL4IkWy97j

关于Golang 将 map[string]*[]interface{} 转换为其他类型的 slice 或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45685383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com