这条规则就是我对 Go 中 slice 的了解
当元素的数量和容量的宽度相同时(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]
}
为什么水果的价值不是【香蕉芒果龙木瓜】?
繁华开满天机
相关分类