[TOC]
Array
- Array赋值:会复制所有元素
- 函数传递:会复制所有元素,如果要修改Array的值,传递指针
- Array的数组长度是类型的一部分,[10]int 与[20]int是不同的类型
slice
- slice是引用类型变量,赋值与函数传递,不会复制所有元素。
- slice的结构:指针(指向某个array),length 与 capacity
- append会动态改变slice的容量的大小,具体的增长策略依赖于具体的实现,依赖于多个因素,比如类型,原始长度大小;可能各个版本的go实现不一样。具体看代码:https://github.com/golang/go/blob/master/src/runtime/slice.go
- 切片,length与capacity 决定,slice 的使用场景优于Array
- nil slice 可以append
slice interval
https://play.golang.org/p/mLgfw0eZ52j
package main
import (
"fmt"
)
func main() {
x := [3]string{"Hello", "Hello", "Hello"}
s := x[:]
s[1] = "xxxx"
fmt.Println(x, s)
}
# output
# [Hello xxxx Hello] [Hello xxxx Hello]
网友评论