前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO语言基础之切片

GO语言基础之切片

原创
作者头像
墨紫羽墨
发布2022-03-01 21:54:19
2890
发布2022-03-01 21:54:19
举报
文章被收录于专栏:FutureTester

一、切片:

1、切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。 2、切片的长度可以改变,因此,切片是一个可变的数组。 3、切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。 4、cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。 5、切片的定义:var 变量名 []类型,比如 var str []string var arr []int。 6、如果 slice == nil,那么 len、cap 结果都等于 0。

1、定义切片

代码语言:javascript
复制
package main

import "fmt"

func test01() {
	//1.声明切片
	var s1 []int
	fmt.Println("s1:", s1)
	if s1 == nil {
		fmt.Println("s1是空")
	} else {
		fmt.Println("s1不是空")
	}

	// 2.:=
	s2 := []int{}
	fmt.Println("s2:", s2)

	// 3.make()
	var s3 []int = make([]int, 5)
	fmt.Println("s3:", s3)

	// 4.初始化赋值
	var s4 []int = make([]int, 0, 0)
	fmt.Println("s4:", s4)
	s5 := []int{1, 2, 3}
	fmt.Println("s5:", s5)
	
	// 5.从数组切片
	arr := [5]int{1, 2, 3, 4, 5}
	var s6 []int
	// 前包后不包
	s6 = arr[1:4]
	fmt.Println("s6:", s6)
}

func main() {
	test01()
}

运行结果:

2、切片初始化

代码语言:javascript
复制
func test02() {
	arr := [...]int{9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
	slice1 := arr[2:8]
	slice2 := arr[:6]
	slice3 := arr[5:]
	slice4 := arr[:]
	slice5 := arr[:len(arr)-1] //去掉切片的最后一个元素
	fmt.Printf("arr %v\n", arr)
	fmt.Printf("slice1: %v\n", slice1)
	fmt.Printf("slice2: %v\n", slice2)
	fmt.Printf("slice3: %v\n", slice3)
	fmt.Printf("slice4: %v\n", slice4)
	fmt.Printf("slice5: %v\n", slice5)
}

运行结果:

3、切片的修改:

代码语言:javascript
复制
func test03() {
	darr := [...]int{57, 89, 90, 82, 100, 78, 67, 69, 59}
	dslice := darr[2:5]
	fmt.Println("array before", darr)
	for i := range dslice {
		dslice[i]++
	}
	fmt.Println("array after", darr)
}

运行结果:

4、append方法:

代码语言:javascript
复制
func test04() {
	slice1 := []int{1, 2, 3}
	fmt.Println("slice1:", slice1)
	slice2 := append(slice1, 4, 5, 6)
	fmt.Println("slice2:", slice2)
	slice3 := []int{7, 8, 9}
	slice4 := append(slice1, slice3...)
	fmt.Println("slice4:", slice4)
}

运行结果:

5、len()cap()

代码语言:javascript
复制
func test05() {
	slice1 := []string{"apple", "orange", "grape", "mango", "water melon", "pine apple", "chikoo"}
	slice2 := slice1[1:3]
	fmt.Printf("len: %d cap: %d", len(slice2), cap(slice2))
}

运行结果:

6、copy()

代码语言:javascript
复制
func test06() {
	s1 := []int{1, 2, 3, 4, 5}
	s2 := make([]int, 10)
	fmt.Printf("before s1 : %v\ns2 : %v\n", s1, s2)
	copy(s2, s1)
	fmt.Printf("after s1 : %v\ns2 : %v\n", s1, s2)
}

运行结果:

7、遍历

代码语言:javascript
复制
func test07() {
	slice1 := []string{"apple", "orange", "grape", "mango", "water melon", "pine apple", "chikoo"}
	for id, v := range slice1 {
		fmt.Printf("id:%v,	value:%v\n", id, v)
	}
}

运行结果:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、切片:
    • 1、定义切片
      • 2、切片初始化
        • 3、切片的修改:
          • 4、append方法:
            • 5、len()和cap()
              • 6、copy()
                • 7、遍历
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档