项目中需要用到golang的队列,container/list,需要放入的元素是struct,但是因为golang中list的设计,从list中取出时的类型为interface{},所以需要想办法把interface{}转换为struct。
这里需要用到interface assertion,具体操作见下面代码:
1 package main 2 3 import ( 4 "container/list" 5 "fmt" 6 "strconv" 7 ) 8 9 type People struct {10 Name string11 Age int12 }13 14 func main() {15 // Create a new list and put some numbers in it.16 l := list.New()17 l.PushBack(People{ "zjw", 1})18 19 // Iterate through list and print its contents.20 e := l.Front()21 p, ok := (e.Value).(People)22 if ok {23 fmt.Println("Name:" + p.Name)24 fmt.Println("Age:" + strconv.Itoa(p.Age))25 } else {26 fmt.Println("e is not an People")27 }28 }