Golang:从列表元素中获取值

3 pointers structure go panic

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

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

   fmt.Println(A_elem.Value.(Player).year) //3000
Run Code Online (Sandbox Code Playgroud)

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

这条线运作良好。

   fmt.Println(A_elem.Value)                    //&{dddd 3000}
Run Code Online (Sandbox Code Playgroud)

代码在这里

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
}
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能做到呢?

提前致谢。

def*_*ode 6

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

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

游乐场链接已修复。