1

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

リストからの構造体から値を取得しようとすると、エラーパニックが発生します。

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

私がしたことは、リストを作成し、リストに構造を追加することです。リストから要素を取得すると、それはインターフェイス型になります。それでも、インターフェース型の値全体を出力すると、構造体の値が含まれています。そのため、構造体の値を 1 つ取得しようとしましたが、パニック エラーが発生しました。

このラインはうまく機能しています。

   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 つから特定の値を取得できるようにしたいと考えています。

どうすればできますか?

前もって感謝します。

4

1 に答える 1

4

正確な問題は、不適切な型アサーションを実行しようとしたことです。

リストは を保持し*Playerますが、それが単純なPlayer構造体であることを assert と入力するのにうんざりしています。

これを修正した遊び場リンク。

于 2013-11-20T06:48:04.533 に答える