pointers - 戈兰 : Get the value from list element

标签 pointers go structure panic

http://play.golang.org/p/TE02wFCprM

当我尝试从列表中的结构中获取值时,出现错误 panic 。

   fmt.Println(A_elem.Value.(Player).year) //3000

我所做的是创建一个列表并将结构添加到列表中。 当我从列表中检索元素时,它是接口(interface)类型。 但如果我打印出整个接口(interface)类型值,它仍然包含结构值。 所以我试图获取结构的一个值,但得到了 panic 错误。

这条线运行良好。

   fmt.Println(A_elem.Value)                    //&{dddd 3000}

代码在这里

package main

import (
  "container/list"
  "fmt"
)

func main() {

  type Player struct {
    name      string
    year   int
  }
  A := new(Player)
  A.name = "aaaa"
  A.year = 1990

  B := new(Player)
  B.name = "eeee"
  B.year = 2000

  C := new(Player)
  C.name = "dddd"
  C.year = 3000

  play := list.New()
  play.PushBack(A)
  play.PushBack(B)
  play.PushBack(C)

  A_elem := play.Back()

  //A_elem.Value is type Player struct
  fmt.Println(A_elem.Value)                    //&{dddd 3000}
  fmt.Println(A_elem.Value.(Player).year) //3000
}

我想将结构保存在列表中,并能够从列表中保存的结构之一检索特定值。

我该怎么做?

提前致谢。

最佳答案

确切的问题是您尝试执行错误的类型断言。

该列表包含 *Player,但您厌倦了键入断言它是一个普通的 Player 结构。

Playground link修复此问题。

关于pointers - 戈兰 : Get the value from list element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20087233/

相关文章:

C++ 字符串和指针

c++ - T* 与 char* 指针算法

c - 复制结构时没有获得正确的值

go - 如何在中间件中获取路由参数?

go - 为什么永远不会调用终结器?

android - Facebook APP : allow inapp invites to non app using fb users

c - 将可变大小的数组分配给固定大小的数组 c

go - 在 Go 中使用 google oauth2

c - C 结构有大小限制吗?

c - 用 C 将条目写入文件的结构数组中