gpt4 book ai didi

list - 如何在 Go 中打印列表的值

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:49 28 4
gpt4 key购买 nike

我在 Go 的列表中有一些值。我只需要能够打印它们,但每次尝试时它都会告诉我 test.FirstName 未定义(类型 *list.Element 没有字段或方法 FirstName)。

那么我如何适本地访问列表的成员呢?它的最后几行给我带来了麻烦。

package main

import (
"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) 可以工作并打印所有内容。但我仍然需要能够访问列表中的每个元素。我该怎么做?

最佳答案

您手头似乎没有对象类型。您可以使用断言来获取实际的对象类型,如下所示:

  test:=studentList.Front()
if actualStudent, ok := test.Value.(Student); ok {
fmt.Println(actualStudent.FirstName)
}

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

关于list - 如何在 Go 中打印列表的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56844401/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com