Golang:从list元素中获取值

时间:2013-11-20 04:16:15

标签: pointers go structure panic

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

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

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

我所做的是制作一个列表并将结构添加到列表中。 当我从列表中检索元素时,它处于接口类型中。 但是,如果我打印出整个接口类型值,它还有结构值。 所以我试图得到一个结构值,但得到了恐慌错误。

这条线运作良好。

   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
}

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

我怎么能这样做?

提前致谢。

1 个答案:

答案 0 :(得分:2)

确切的问题是你试图做一个错误的类型断言。

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

Playground link已修复此问题。