golang list.List中的元素是结构体,如何实现遍历
时间: 2024-02-26 21:58:53 浏览: 247
Go 语言中的 `list.List` 类型是双向链表类型,如果 List 中的元素是结构体类型,我们可以通过遍历 List 中的每个元素,并访问结构体中的字段来实现对结构体的遍历。以下是一个示例代码:
```go
package main
import (
"container/list"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
// 声明一个 Person 类型的双向链表
l := list.New()
// 添加元素
l.PushBack(Person{"Alice", 18})
l.PushBack(Person{"Bob", 20})
l.PushBack(Person{"Charlie", 22})
// 遍历输出
for e := l.Front(); e != nil; e = e.Next() {
p := e.Value.(Person)
fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)
}
}
```
在上面的例子中,我们声明了一个 `Person` 类型的双向链表 `l`,并向其中添加了三个 `Person` 类型的元素。然后,我们使用 `for` 循环遍历输出了每个 `Person` 结构体中的 `Name` 和 `Age` 字段。
需要注意的是,遍历 List 中的元素时,我们需要使用 `e := l.Front(); e != nil; e = e.Next()` 来遍历链表中的每个元素。其中,`l.Front()` 返回链表中的第一个元素,`e != nil` 表示链表中还有元素未遍历,`e = e.Next()` 表示将当前元素指针指向下一个元素。在每次循环中,我们使用 `e.Value.(Person)` 来将元素值转换为 `Person` 类型的结构体,并访问其 `Name` 和 `Age` 字段。
阅读全文