Go语言自学系列 | golang切片的初始化

Posted COCOgsta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言自学系列 | golang切片的初始化相关的知识,希望对你有一定的参考价值。

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


切片的初始化方法很多,可以直接初始化,也可以使用数组初始化等。

切片如何切分

package main

import "fmt"

// 切片
func test1() 
    var s1 = []int1, 2, 3, 4, 5, 6
    s2 := s1[0:3] // [)
    fmt.Printf("s2: %v\\n", s2)
    s3 := s1[3:]
    fmt.Printf("s3: %v\\n", s3)
    s4 := s1[2:5]
    fmt.Printf("s4: %v\\n", s4)
    s5 := s1[:]
    fmt.Printf("s5: %v\\n", s5)


func main() 
    test1()

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s2: [1 2 3]
s3: [4 5 6]
s4: [3 4 5]
s5: [1 2 3 4 5 6]

直接初始化

package main

import "fmt"

func main() 
    s := []int1, 2, 3
    fmt.Printf("s: %v\\n", s)

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s: [1 2 3]

使用数组初始化

package main

import "fmt"

func main() 
    arr := [...]int1, 2, 3
    s1 := arr[:]
    fmt.Printf("s1: %v\\n", s1)

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s1: [1 2 3]

使用数组的部分元素初始化(切片表达式)

切片的底层就是一个数组,所以我们可以基于数组通过切片表达式得到切片。 切片表达式中的low和high表示一个索引范围(左包含,右不包含),得到的切片长度=high-low,容量等于得到的切片的底层数组的容量。

package main

import "fmt"

func main() 
    arr := [...]int1, 2, 3, 4, 5, 6
    s1 := arr[2:5]
    fmt.Printf("s1: %v\\n", s1)
    s2 := arr[2:]
    fmt.Printf("s2: %v\\n", s2)
    s3 := arr[:3]
    fmt.Printf("s3: %v\\n", s3)

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s1: [3 4 5]
s2: [3 4 5 6]
s3: [1 2 3]

空(nil)切片

一个切片在未初始化之前默认为 nil,长度为 0,容量为0.

package main

import "fmt"

func main() 
    var s1 []int
    fmt.Println(s1 == nil)
    fmt.Printf("len: %d, cap: %d\\n", len(s1), cap(s1))

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
true
len: 0, cap: 0
创作挑战赛 新人创作奖励来咯,坚持创作打卡瓜分现金大奖

以上是关于Go语言自学系列 | golang切片的初始化的主要内容,如果未能解决你的问题,请参考以下文章

Go语言自学系列 | go语言切片的遍历

Go语言自学系列 | go语言切片元素的添加和删除copy

Go语言自学系列 | golang结构体的初始化

Golang✔️走进 Go 语言✔️ 第十二课 结构体 & 切片

Golang✔️走进 Go 语言✔️ 第十二课 结构体 & 切片

Go语言自学系列 | golang数组