我在 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)
}
如果没有帮助,请对您遇到的问题发表评论,我将非常乐意为您提供帮助。
呼如林
TA贡献1798条经验 获得超3个赞
快速阅读代码。根据您的声明,您正在推studentCount
入一个 int 变量的列表。我认为你想要实现的目标是推入结构student
。打字错误?
PS 如果这不是一项作业或有特定要求的东西,则只需使用切片即可。始终使用切片。
- 2 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消