這個規則就是我所知道的關于 Go 中的切片
- 當元素數量和容量寬度相同時(len(fruits) == cap(fruits)),append() 產生的新元素就是新的參考。
- 當元素數量小于容量(len(fruits) < cap(fruits))時,新元素被放入容量范圍,導致所有其他具有相同參考的切片元素的值發生變化。
我有這樣的代碼
package main
import (
"fmt"
)
func main() {
//declare slice
var fruits = []string{"banana", "mango", "tomato"}
//using two index technique to make slice
var newFruits = fruits[1:2]
//append element to fruits slice
fruits = append(fruits, "papaya")
//append element to newFruits slice
newFruits = append(newFruits, "dragon")
fmt.Println(cap(fruits)) //2
fmt.Println(cap(newFruits)) //6
fmt.Println(newFruits) //[mango dragon]
fmt.Println(fruits) //[banana mango tomato papaya]
}
為什么水果的價值不是【香蕉芒果龍木瓜】?
uj5u.com熱心網友回復:
下面是代碼的作業原理:
就在附加papaya到之前fruits,
fruits = {"banana", "mango", "tomato"}
并newFruits指向與 相同的陣列,fruits但從mango.
當你追加papaya到 時fruits,會創建一個容量=6 的新陣列,因為容量fruits是 3。fruits現在指向這個新陣列,有 4 個值:
fruits = {"banana", "mango", "tomato", "papaya"}
newFruits仍然指向舊fruits陣列,并包含 2 個元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371084.html
