Array slice

[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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容