【问题标题】:Golang : Get the value from list elementGolang:从列表元素中获取值
【发布时间】:2013-11-20 04:16:14
【问题描述】:

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
}

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

我该怎么做?

提前致谢。

【问题讨论】:

  • 你需要一个链表,还是只需要一个类似列表的集合?

标签: pointers go structure panic


【解决方案1】:

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

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

Playground link 已修复。

【讨论】:

  • 感谢 deft_code。你的操场解决了我的确切问题。
猜你喜欢
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
相关资源
最近更新 更多