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

為了賬號安全,請及時綁定郵箱和手機立即綁定

正在回答

5 回答

```

package main


import "fmt"


func main() {

? ? var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

? ??

? ? // 切片下標4~6 容量上界到8?

? ? // slice5 = [5 6] * *,? 實際長度為2? 容量為4

? ? // 后面兩個*代表上界最多擴容到下標8 [5,6,7,8]

? ? slice5 := numbers4[4:6:8]? ? ??

? ? length := (2)? ? ? ? ? ? ? ? ? ?

capacity := (4)? ? ? ? ? ? ? ? ?

fmt.Printf("%v, %v\n", length == len(slice5), capacity == cap(slice5))



// s1[:cap(s1)] 代表將其擴容到最大值

? ? // 對其進行擴容 slice5[:4] 擴容到長度為4

? ? // 在切片后方追加元素 [5,6,7,8,11,12,13]

? ? // 4+3? 長度為7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

slice5 = slice5[:cap(slice5)]? ? ? ? ? ? ? ? ?

slice5 = append(slice5, 11, 12, 13)? ? ? ? ?

length = (7)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

fmt.Printf("%v\n", length == len(slice5))



// copy 參數2的元素 覆蓋掉參數1值中的相應位置 (索引值)

// [5,6,7,8,11,12,13] <-[0,0,0]

// [0,0,0,8,11,12,13]?

? ? //? 0 1 2 3 4? ? ??

slice6 := []int{0, 0, 0}? ? ? ? ? ? ? ? ? ??

copy(slice5, slice6)? ? ? ? ? ? ? ? ? ? ? ??

e2 := (0)

e3 := (8)

e4 := (11)

fmt.Printf("%v, %v, %v\n", e2 == slice5[2], e3 == slice5[3], e4 == slice5[4])

}

```

2 回復 有任何疑惑可以回復我~

slice5?:= numbers4[4:6:8]

slice5 = int[]{5,6}

slice5 = slice5[:cap(slice5)]

slice5 = int[]{5,6,7,8,9}

slice5 = append(slice5, 11, 12, 13)

slice5 =?int[]{5,6,7,8,9,11,12,13}

所有 len(slice5)=7


0 回復 有任何疑惑可以回復我~

要想知道他為什么是7 那就要看上一段代碼中cap(slice5) 它的容量是多少,slice5 := numbers4[4:6:8]?這里有第三個數值8 就是這個切片的容量上邊界,也就限制了它本身底層數組的長度從原來的10變成了8,容量的求值是數組長度減去下邊界的絕對值,所以是8-4=4,后面的語句append對slice5進行了擴容,加了三個數11,12,13,所以len(slice5) = 7

1 回復 有任何疑惑可以回復我~

你可以對照著題目看一下過程

len(slice5)=2

cap(slice5)=4

slice5 = slice5[:cap(slice5)]

len(slice5)=4

slice5 = append(slice5, 11, 12, 13)

len(slice5)=7

so,length=7

0 回復 有任何疑惑可以回復我~

不是8嗎

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Go語言第一課
  • 參與學習       108029    人
  • 解答問題       153    個

Go語言入門教程,編程之必備知識擴散,打好Go語言編程基礎

進入課程

length長度

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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