2013-11-20 2 views
1

http://play.golang.org/p/TE02wFCprMGolang: Получить значение из списка элемента

Я получаю панику ошибки, когда я пытаюсь получить значение из структуры, которая из списка.

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 
} 

Я хочу, чтобы сохранить структуры в списке и быть в состоянии получить конкретные значения из одной из структур, которые сохраняются в списке.

Как я мог это сделать?

Заранее спасибо.

+0

Нужен ли вам связанный список или список, подобный списку? –

ответ

1

Точная проблема заключается в том, что вы пытались сделать плохое утверждение типа.

В этом списке содержится *Player, но вы устали печатать, утверждая, что это простая структура Player.

Playground link с этим фиксированным.

 Смежные вопросы

  • Нет связанных вопросов^_^