Day9-Go切片Slice

前言

上一章节我们介绍了 Go 语言的阵列,但由於在宣告阵列後,他的长度需要为固定的,使得在部分需求中,使用起来有些许的不方便,所以 Go 提供另一个与型态与阵列非常相似的容器,叫做切片(Slice),一样只能装载相同性质的元素,但是长度是可以做弹性改变的,使得在使用上,更加方便。

建立切片

我们先来看如何建立一个切片:

package main
import "fmt"
func main() {
   count := []int64{}
   fmt.Println(count) // []
}

可以打开昨天介绍的阵列,比较一下有哪里不一样,切片在中括号里是不需要给定一个长度的,然而因为长度是可变的,所以会有一些函式是搭配使用,来对切片做增加或减少元素。

切片截取

切片能改变长度的特性,也多了许多方便性,可以透过设定的上限以及下限来截取切片:

package main
import "fmt"
func main() {
   count := []int64{1,2,3,4,5}
   subCount := count[0:2]
 
   fmt.Println(subCount) // [1 2]
}

我们解释上述的程序码,先宣告名为 count 的切片,而今天有一个需求是要印出 index 0到2的值,所以我们宣高另一个切片,设置下限为0,上限为2,然後对 count 做截取,如此一来,即可达到我们要的需求。

切片append

当想对切片最後面增加一个元素时,则可以使用append函式:

package main
 
import "fmt"
 
func main() {
  count := []int64{1}
  count = append(count, 2)
  fmt.Println(count) // [1 2]

}

如此一来,就可以在最後索引之後,增加一个元素。

矩阵 (matrix)

我们也可以利用多维切片制作矩阵 (matrix),见下例:

package main
 
import "fmt"
 
func main() {
   matrix := [][]float64{
       []float64{1, 2, 3},
       []float64{4, 5, 6},
   }
 
   fmt.Println(matrix)
}

make

切片也可以在执行期动态产生,这时候会使用 make 做为关键字。我们在下方举一个例子,我们动态产生一个长度为 3 的切片:

package main
 
import "fmt"
 
func main() {
   slice := make([]int, 3)
 
   for i := 0; i < len(slice); i++ {
       y := i + 1
       slice[i] = y * 2 
   }
   fmt.Println(slice) // [2 4 6]
}

结语

本文介绍了 Go 语言的另一种容器切片,作为与上一章节的阵列比较,这边介绍了切片几个优点,而切片在实务上的运用,也比阵列来的多,希望今天的讲解对您有帮助,谢谢阅读!

参考来源

https://opensourcedoc.com/golang-programming/array-slice/


<<:  Day17 - 铁人付外挂前置作业(二)- 开发环境

>>:  【Day2】如何安装odoo社区版?

资料结构与演算法

** 这主题博大精深这里先进行初步的介绍** 资料结构 资料结构可以想像成容器,每个物品都有适合放置...

成衣系统 成衣制造业 裁剪

(有须要 裁剪计划Excel 档的朋友, 烦请发mail给我: stephen3342@gmail....

我们的基因体时代-AI, Data和生物资讯 Day02- 机器学习在生物资讯中之应用

上一篇我们的基因体时代-AI, Data和生物资讯 Day01- 超越摩尔定律的资料增长介绍了生医领...

Day13: GuardDuty结果汇出至S3、发送告警Email设定

如何把GuardDuty找到的结果汇出到S3储存 GuardDuty找到的结果会保留90天,如果想要...

什麽是软件?

软件,或者,程序本质上是一个黑盒子;这个黑盒子接收一个输入,然後,会有一个输出; 输入:可以用数据去...