golang数据类型切片(slice)

sss4 sss4     2023-04-09     783

关键词:

前言

Go中的数组数据类型的长度在声明的时候就已经固定了,切片是基于数组实现的 可变长度的容器。

 

 

切片的定义和初始化

切片类型和数组类型一样,想要使用,就必须要定义和初始化,不同之处已经提到,切片不需要指定切片的长度。

 

1.自定义切片

package main

import (
	"fmt"
)

func main() 
	//切片的定义
	var s1 []int //存放元素不限定,仅限定数据类型
	var s2 []string
	fmt.Println(s1 == nil) //在初始化之前切片的值=nil
	fmt.Println(s2 == nil)
	//切片的初始化
	s1 = []int1, 2, 3
	s2 = []string"刘德华", "郭富城", "黎明", "梁朝伟"
	//切片的长度和容量
	fmt.Printf("长度:%d 容量:%d", len(s1), cap(s1))

  

2.由数组得到切片

 

package main

import (
	"fmt"
)

func main() 

	a1 := [...]int1, 2, 3, 4, 5, 6, 69
	s1 := a1[0:2]
	s2 := a1[:4]
	s3 := a1[2:]
	s4 := a1[:]
	fmt.Println(s1, s2, s3, s4)
	//切片的容量:是指底层数组的从切边的第1个元素-----》最后1个元素的数量
	fmt.Printf("切片的长度:%d 切片的容量:%d
", len(s1), cap(s1))
	fmt.Printf("切片的长度:%d 切片的容量:%d
", len(s2), cap(s2))
	fmt.Printf("切片的长度:%d 切片的容量:%d
", len(s3), cap(s3))


  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

see also

golang复合类型(代码片段)

前言上文Golang基本类型中我们介绍了golang基本类型的常见用法,本文将介绍golang中的复合数据类型,常用的复合数据类型有array数组,slice切片,map字典和struct四种。文章目录前言数组Sliceslice基本操作初始化在slice... 查看详情

golang之切片

1.切片:切片是数组的一个引用,因此切片是引用类型2.切片的长度可以改变,因此,切片是个可变的数组。3.切片遍历方式和数组一样,可以用len()求长度4.cap可以求出slice最大的容量,0<=cap(slice) <=len(array),其中array... 查看详情

golang入门:切片(slice)(代码片段)

切片(slice)是Golang中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数append()来实现的,这个函数可以快速且高效... 查看详情

go语言基础之切片(代码片段)

1切片介绍  Golang提供数组这种存储相同类型数据的数据结构,由于在现实生活中一件事物的个数不是固定,比如说一个班级的学生人数等,然而数组的长度是固定,因此在Golang中很少直接使用数组。和数组相对应的类型是切... 查看详情

golang入门:切片(slice)(代码片段)

切片(slice)是Golang中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数append()来实现的,这个函数可以快速且高效... 查看详情

golang数据二(切片)

在项目开发过程中,更多的场景是需要一个长度可以动态更新的数据存储结构,切片本身并非是动态数组或数组指针,他内部通过指针引用底层数组,并设定相关属性将数据读写操作限定在指定区域内。比如:/runtime/slice.gotype&nb... 查看详情

golang数组和切片(代码片段)

数组的使用注意事项和细节1.数组是多个相同类型数据的结合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化。2.vararr[]int这时arr就是一个slice切片,切片后面专门讲解。3.数组中的元素可以是任何数... 查看详情

golang-101-hacks(12)——切片作为函数参数传递

参考技术A注:本文是对golang-101-hacks中文翻译。在Go语言中,函数参数是值传递。使用slice作为函数参数时,函数获取到的是slice的副本:一个指针,指向底层数组的起始地址,同时带有slice的长度和容量。既然各位熟知数据存储的... 查看详情

golang:切片的声明初始化以及操作示例,详解概括(代码片段)

Golang基础学习项目地址:https://github.com/LeoLeeWithWarmPants/golangStudyhttps://github.com/LeoLeeWithWarmPants/golangStudy概述slice本质上是一个数据结构(struct结构体)。切片是数组的一个引用,即切片的底层是一个数组,所以... 查看详情

golang使用注意点

1、切片(slice)切片像是动态数组,使用起来很方便。注意切片实际上是指针类型,不管用在函数入参、再切片,如果需要保证切片内容不被修改,要使用切片复制。即关键字copy。=-=-=-=-=PoweredbyBlogilo 查看详情

使用golang的slice来模拟栈(代码片段)

slice(切片):底层数据结构是数组stack(栈):一种先进后出的数据结构普通版的模拟写入和读取的栈packagemainimport"fmt"//栈的特点是先进后出//使用一个切片的全局变量来模拟栈varstack[]int//向栈中添加数据funcpush(valueint)stack=append... 查看详情

go切片

...用packagemainimport"fmt"funcmain() /* 数组array: 存储一组相同数据类型的数据结构。 特点:定长 切片slice: 同数组类似,也叫做变长数组或者动态数组。 特点:变长 是一个引用类型的容器,指向了一个底层数组。 切片创建: ... 查看详情

在 golang 中有 nil slice 和 empty slice 有啥意义?

】在golang中有nilslice和emptyslice有啥意义?【英文标题】:Whatisthepointofhavingnilsliceandemptysliceingolang?在golang中有nilslice和emptyslice有什么意义?【发布时间】:2018-08-1217:40:09【问题描述】:区分零切片有什么意义,即。未初始化的切... 查看详情

go灵活多变的切片slice

...在Go源码中是这样定义切片的,源码地址:https://github.com/golang/go/blob 查看详情

golang中数组(array)和切片(slice)的区别

参考技术AGo中数组的长度是不可改变的,而Slice解决的就是对不定长数组的需求。他们的区别主要有两点。数组:切片:注意1虽然数组在初始化时也可以不指定长度,但Go语言会根据数组中元素个数自动设置数组长度,并且不可... 查看详情

go语言引用类型

...slice:=slice[2:6:8]2、切片操作a)使用append函数在slice尾部添加数据vara=[]int1,2,3b:=append(a,4)b)使用copy()函数copy在两个slice间复制数据,复制长度以len小的为准vara=[]int1,2,3,4,5b:=[]int100,200copy(a,b)容器1、Map定义a)声明一个Map        v... 查看详情

golang基础——切片几种声明方式(代码片段)

1,声明slice是一个切片,声明之后没给分配空间,len是0varslice1[]int2,声明slice是一个切片,并且初始化,默认值为123,长度是3slice1:=[]int1,2,33,声明slice是一个切片,声明之后通过make分配3空... 查看详情

golang数据类型之数组(代码片段)

目录1、存储方式2、声明与初始化2.1声明语法2.2数组类型2.3数组默认值2.4声明并初始化3、访问与修改4、指针数组5、数组拷贝6、数组遍历7、多维数组8、数组作为函数参数有过Python、JavaScript编程经验的人都知道其数组是动态的,... 查看详情