为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中打印列表的值

如何在 Go 中打印列表的值

Go
潇湘沐 2023-06-26 17:58:51
我在 Go 的列表中有一些值。我只需要能够打印它们,但每次我尝试它都会告诉我 test.FirstName undefined (类型 *list.Element 没有字段或方法 FirstName)。那么如何正确访问列表中的成员呢?最后几行给我带来了麻烦。package mainimport (    "bufio"    "fmt"    "log"    "strconv"    "strings"    "os"    "container/list")type Student struct {    FirstName string    LastName  string    testScore int    homeworkScore int}func main() {    fmt.Println("What is the name of your file?\n")     var filename string     fmt.Scan(&filename)    file, err := os.Open(filename)    if err != nil {     log.Fatal(err)    }    scanner := bufio.NewScanner(file)    //var numLineCount int = 0    var gradeCount = 0    var student Student    var studentList list.List    var studentCount int = 1    for scanner.Scan() {        line := scanner.Text()        fields := strings.Fields(line)        student.FirstName = fields[0]        student.LastName = fields[1]        scanner.Scan()        line2 := scanner.Text()        sum := 0        gradeCount = 0        for _, field := range strings.Fields(line2) {            n, err := strconv.Atoi(field)            if err != nil {                        log.Fatal(err)                    }            gradeCount++            sum += n        }        student.testScore = sum/gradeCount        gradeCount = 0        scanner.Scan()        line3 := scanner.Text()        sum2 := 0        for _, field := range strings.Fields(line3) {            n, err := strconv.Atoi(field)            if err != nil {                        log.Fatal(err)                    }            gradeCount++            sum2 += n        }        student.homeworkScore = sum2/gradeCount        studentList.PushBack(studentCount)        studentCount++        fmt.Println("First:", student.FirstName, "Last:", student.LastName, "Test Avg:", student.testScore, "Homework Avg:", student.homeworkScore)        }        test:=studentList.Front()        fmt.Println(test.FirstName)    }更新:所以我发现我不能在 println 部分使用 test.FirstName ,只有 Println(test) 可以工作并打印所有内容。但我仍然需要能够访问列表中的每个元素。我怎样才能这样做呢?
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

看来您没有方便的对象类型。您可以使用断言来获取实际的对象类型,如下所示:


  test:=studentList.Front()

  if actualStudent, ok := test.Value.(Student); ok {

      fmt.Println(actualStudent.FirstName)

  }

如果没有帮助,请对您遇到的问题发表评论,我将非常乐意为您提供帮助。


查看完整回答
反对 回复 2023-06-26
?
呼如林

TA贡献1798条经验 获得超3个赞

快速阅读代码。根据您的声明,您正在推studentCount入一个 int 变量的列表。我认为你想要实现的目标是推入结构student。打字错误?

PS 如果这不是一项作业或有特定要求的东西,则只需使用切片即可。始终使用切片。


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信