我在 Go 的列表中有一些值。我只需要能夠打印它們,但每次我嘗試它都會告訴我 test.FirstName undefined (類型 *list.Element 沒有字段或方法 FirstName)。那么如何正確訪問列表中的成員呢?最后幾行給我?guī)砹寺闊?。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) }更新:所以我發(fā)現(xiàn)我不能在 println 部分使用 test.FirstName ,只有 Println(test) 可以工作并打印所有內(nèi)容。但我仍然需要能夠訪問列表中的每個元素。我怎樣才能這樣做呢?
2 回答

青春有我
TA貢獻1784條經(jīng)驗 獲得超8個贊
看來您沒有方便的對象類型。您可以使用斷言來獲取實際的對象類型,如下所示:
test:=studentList.Front()
if actualStudent, ok := test.Value.(Student); ok {
fmt.Println(actualStudent.FirstName)
}
如果沒有幫助,請對您遇到的問題發(fā)表評論,我將非常樂意為您提供幫助。

呼如林
TA貢獻1798條經(jīng)驗 獲得超3個贊
快速閱讀代碼。根據(jù)您的聲明,您正在推studentCount
入一個 int 變量的列表。我認為你想要實現(xiàn)的目標是推入結(jié)構(gòu)student
。打字錯誤?
PS 如果這不是一項作業(yè)或有特定要求的東西,則只需使用切片即可。始終使用切片。
- 2 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消