第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

恐慌:運(yùn)行時(shí)錯(cuò)誤:索引超出范圍

恐慌:運(yùn)行時(shí)錯(cuò)誤:索引超出范圍

Go
BIG陽 2022-01-10 18:45:49
抱歉,如果這看起來很基本,但為什么會(huì)出現(xiàn)此錯(cuò)誤?我沒有看到任何超出范圍的切片/數(shù)組。package mainimport "fmt"func main(){    s:= [...]int{1,2,3}    rev(s[:])    fmt.Println(s)}func rev(input []int) []int {    var j int    l:=len(input)-1    for i:=0; i<l;i++ {        j= input[len(input)-i]        input=append(input, j)        i++    }    return input[:l]}謝謝
查看完整描述

1 回答

?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

[...]int{1,2,3}不是切片。它是一個(gè)容量為 3 的數(shù)組。

參見“ golang-101-hacks: Array ”


如果您嘗試附加第四個(gè)元素......那將超出范圍。


但是這里s[:] 將其轉(zhuǎn)換為 slice。


實(shí)際的 ' index out of range' 來自input[len(input)-i]其中,帶有i=0,表示input[len(input)]:超出范圍。


這會(huì)更好(操場)(沒有超出范圍)


最后fmt.Println(s)仍然打印原始數(shù)組,而不是返回rev()(被忽略)。

這將打印“預(yù)期”結(jié)果(使用追加,因此變異并添加到切片):


package main


import "fmt"


func main() {

    s := [...]int{1, 2, 3}

    t := rev(s[:])

    fmt.Println(s)

    fmt.Println(t)

}


func rev(input []int) []int {

    var j int

    l := len(input) - 1

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

        j = input[l-i]

        input = append(input, j)

    }

    return input

}

結(jié)果:


[1 2 3]

[1 2 3 3 2 1]

這(游樂場)實(shí)際上會(huì)反轉(zhuǎn)切片:


var j int

var res []int

l := len(input) - 1

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

    j = input[l-i]

    res = append(res, j)

}

return res

結(jié)果:


[1 2 3]

[3 2 1]


查看完整回答
反對 回復(fù) 2022-01-10
  • 1 回答
  • 0 關(guān)注
  • 222 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號