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]
- 1 回答
- 0 關(guān)注
- 222 瀏覽
添加回答
舉報(bào)