append(增加切片成员)
1 作用
给切片增加成员
2. 语法
func append(slice []Type, elems ...Type) []Type
3. 完整示例
- 代码
package main
import "fmt"
func main () {
appendForSlice()
}
func appendForSlice() {
nameList := make([]string,3)
nameList[0] = "刘备"
nameList[1] = "关羽"
nameList[2] = "张飞"
fmt.Println(nameList)
fmt.Println("len=",len(nameList))
fmt.Println("cap=",cap(nameList))
//赵云加入
nameList = append(nameList,"赵云")
fmt.Println(nameList)
fmt.Println("len=",len(nameList))
fmt.Println("cap=",cap(nameList))
}
- 结果
[刘备 关羽 张飞]
len= 3
cap= 3
[刘备 关羽 张飞 赵云]
len= 4
cap= 6
如上可见:
- 切片原来长度是3,容量是3
- 增加了1个成员,长度变为4
- 容量3被长度突破了,容量不是+1,而会直接翻倍。
4. 示例(突破切片容量)
此时我们再append一个“诸葛亮”,则结果如下:
- 完整代码
package main
import "fmt"
func main () {
appendForSlice()
}
func appendForSlice() {
nameList := make([]string,3)
nameList[0] = "刘备"
nameList[1] = "关羽"
nameList[2] = "张飞"
fmt.Println(nameList)
fmt.Println("len=",len(nameList))
fmt.Println("cap=",cap(nameList))
//赵云加入
nameList = append(nameList,"赵云")
fmt.Println(nameList)
fmt.Println("len=",len(nameList))
fmt.Println("cap=",cap(nameList))
//诸葛亮加入
nameList = append(nameList,"诸葛亮")
fmt.Println(nameList)
fmt.Println("len=",len(nameList))
fmt.Println("cap=",cap(nameList))
}
- 结果
[刘备 关羽 张飞]
len= 3
cap= 3
[刘备 关羽 张飞 赵云]
len= 4
cap= 6
[刘备 关羽 张飞 赵云 诸葛亮]
len= 5
cap= 6
如上可见:
- 加入诸葛亮后,长度变为5,
- 但是容量6没有被超过,因此容量仍然是6
posted on 2023-01-12 09:12 运维开发玄德公 阅读(123) 评论(0) 编辑 收藏 举报 来源