Pysolate Spine中文旁白 + HTML 图解全部小课 ↗

知识小点 · 解开一个疑问

Go slice:复制描述,还是复制存储?

用两个 int 元素看清 b := a 只复制 slice 描述,而 make 加 copy 才建立独立的元素存储。

01 / 05

先看一个整数 slice

a 保存两个 int 元素

准备播放
Go
SLICE OWNERSHIP / int 元素复制描述 ≠ 复制元素存储
先有 a
CODE BLOCK函数片段 · 省略 package main / import "fmt"
执行第 2 行

        
        func main() {
      
        
            a := []int{1, 2}
      
        
            b := a
      
        
            b[0] = 9
      
        
            c := make([]int, len(a))
      
        
            copy(c, a)
      
        
            c[0] = 7
      
        
            fmt.Println(a, b, c)
      
        
        }
      
先建立 a;完整函数最后读取 a、b、c。
MEMORY MAPa 先拥有两个 int
描述与存储
aslice 描述
读到 [1 2]
a 的元素存储底层数组 · 2 个 int
12
当前只有 a 看到这份数组

slice 描述会记录从哪里开始、能读多少个元素;这里的元素类型是 int。

等待运行结果
旁白

点一下播放即可。也可以只听声音,或拖动进度跳到想看的位置。

0:001:21

正在准备本课音轨与图解。首次播放需要点一下。

跳到某一节 / 查看讲稿