亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 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 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號