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

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

Golang 中“n”個切片值的總和

Golang 中“n”個切片值的總和

Go
HUWWW 2022-12-19 17:52:23
我正在嘗試使用 Slices 和 For Loops 在 golang 中制作一個簡單的平均計算器。但是我在 VS 代碼中遇到錯誤,這個錯誤:恐慌:運行時錯誤:索引超出范圍 [0],長度為 0 goroutine 1 [正在運行]:main.main() C:/Desktop/cs50/week2/myarray.go:16 +0x134 退出狀態 2我在 W10 上使用 VS 代碼。我的代碼:package mainimport "fmt"func main() {    var n int    scores := []uint{}    var sumScores float32 = 0    fmt.Println("How many scores?") //ask user how many values    fmt.Scan(&n)                    //get how many values    for i := 0; i < n; i++ {        fmt.Printf("Scores: ")                     // ask for values        fmt.Scan(&scores[i])                       // get values        sumScores = sumScores + float32(scores[i]) // sum values    }    fmt.Printf("Average: %f\n", sumScores/float32(n)) //average value}知道有什么問題嗎?我認為這可能與我使用 float32 的 Slice 定義有關。提前謝謝你。
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

這非常有效,您只需指出切片的初始大?。?/p>


func main() {

    var n int

    var sumScores float32 = 0


    fmt.Println("How many scores?") //ask user how many values

    fmt.Scan(&n)                    //get how many values

    scores := make([]uint, n, n)


    for i := 0; i < n; i++ {

        fmt.Printf("Scores: ") // ask for values


        fmt.Scan(&scores[i])                       // get values

        sumScores = sumScores + float32(scores[i]) // sum values

    }


    fmt.Printf("Average: %f\n", sumScores/float32(n)) //average value

}

為了學習目的


您聲明scores切片的方式,它只是一個空切片,因此您可以先附加到它,然后掃描新生成位置中的數字。(但這肯定不是解決這個特定問題的方法)


func main() {

    var n int

    scores := []uint{}

    var sumScores float32 = 0


    fmt.Println("How many scores?") //ask user how many values

    fmt.Scan(&n)                    //get how many values


    for i := 0; i < n; i++ {

        fmt.Printf("Scores: ") // ask for values

        scores = append(scores, 0)

        fmt.Scan(&scores[i])                       // get values

        sumScores = sumScores + float32(scores[i]) // sum values

    }


    fmt.Printf("Average: %f\n", sumScores/float32(n)) //average value

}


查看完整回答
反對 回復 2022-12-19
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

分數 := []uint{}


這是一個切片字面量,你應該使用 Golang 內置函數append來處理它。


就像 @no0ob 的第二個例子一樣,或者這個:


func main() {

    var n int

    var tmpVal uint

    scores := []uint{}

    var sumScores float32 = 0


    fmt.Println("How many scores?") //ask user how many values

    fmt.Scan(&n)                    //get how many values


    for i := 0; i < n; i++ {

        fmt.Printf("Scores: ") // ask for values

        fmt.Scan(&tmpVal) // save input to tmpVal

        scores = append(scores, tmpVal) // append tmpVal to scores

        sumScores = sumScores + float32(scores[i]) // sum values

    }


    fmt.Printf("Average: %f\n", sumScores/float32(n)) //average value

}


查看完整回答
反對 回復 2022-12-19
  • 2 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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