Golang:从列表元素中获取值

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

}

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


我怎么能做到?


SMILET
浏览 582回答 1
1回答

收到一只叮咚

确切的问题是你试图做一个错误的类型断言。该列表包含*Player,但您已经厌倦了输入 assert 它是一个普通Player结构体。与此固定的游乐场链接。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go