Day8# Array & Slice(下)

昨天没有写完的 Array & Slice(上) ,今天要来把补完进度。
那我们就开始吧 ─=≡Σ(((っ゚∀゚)っ

Slice Again

稍微快速回忆一下 slice 的特性:

  • 可以任意增加阵列内的元素及长度
  • 与 array 同样以 [] 定义,但不同的是不用在 [] 内写上数量

两种定义方法:

// 方法1
cats := []string{"BuiBui", "MeiMei"}

// 方法2
func make([]string, len, cap) 

咦,方法2的 lencap 又代表什麽呢?
slice 里面包含了三样东西

  1. pointer to the array:会指向底层的 array (没错,就是 array)
  2. length:slice 中的元素数目
  3. capacity: 底层 array 的长度

以下资讯举例,当 len 元素有几个就会长出几个 0 (因为 []T = []int,如果是 string 就会是 )。

// len = 3, cap = 3
gopher := make([]int, 3) // => [0, 0, 0]

// len = 0, cap = 5
gopher := make([]int, 0, 5) // => []

需要特别注意的是,len 的长度不能够超过 cap,不然会出现错误。

// 酱是不行的
gopher := make([]int, 5, 0) // => error!

所以当我们在使用 slice 时,其实是透过 slice 指向某个记忆体位置内的 array。

append

如果想要新增 slice 的元素,就需要使用 append 这个方法:

cats := []string{"BuiBui", "MeiMei"}
cats = append(cats, "Peko")

次元切割刀

登愣!次元切割刀!
拿摸厉害,尼块缩缩看怎麽用R~

既然 slice 叫做 slice,那麽他应该就能够做切割!

num := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
num = num[1:3]
fmt.Println(num, len(num), cap(num)) // => [2, 3] len = 2, cap = 8

num := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
num = num[:3]
fmt.Println(num, len(num), cap(num)) // => [1, 2, 3], len = 3, cap = 9

num := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
num = num[3:]
fmt.Println(num, len(num), cap(num)) // => [4, 5, 6, 7, 8, 9], len = 6 , cap = 6

结尾

slice 的介绍到这结束了,如果有任何问题欢迎与我告知 :)


<<:  Day 8: 人工智慧在音乐领域的应用 (有趣的AI演算法二)

>>:  Day 8 : 案例分享(3.1) 会计模组-基础科目及传票、报表

DAY22-JAVA的package

当一个大型程序交由数个不同专员开发时,用到相同的类别名称是很有可能的,当这种情况发生时,为了确保程序...

Day 30 整体心得及未来规划

前言 今天来说一说今年参加的心得 以及铁人赛之後的规划 心得 铁人赛两年前有参加过一次 但今年很不一...

[Day30]颁发和注销访问token

安装passport套件 安装套件cmd执行以下 composer require laravel/...

Day12 - audio tag 帮我设定背景音乐

透过 audio tag 设定背景音乐 class BGM { constructor() { th...

Python & GCP 学习笔记_Gmail API 操作

最近在一个偶然的情况下接触到 Gmail API 因此找了一个周末来好好研究一下该怎麽操作他 以下是...