Golang数据类型 切片(slice)

前言

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

切片的定义和初始化

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

1.自定义切片

package main

import (
	"fmt"
)

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

  

2.由数组得到切片

package main

import (
	"fmt"
)

func main() {

	a1 := [...]int{1, 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\n", len(s1), cap(s1))
	fmt.Printf("切片的长度:%d 切片的容量:%d\n", len(s2), cap(s2))
	fmt.Printf("切片的长度:%d 切片的容量:%d\n", len(s3), cap(s3))

}

  

  

see also

原文地址:https://www.cnblogs.com/sss4/p/12557081.html

时间: 2024-11-04 07:23:09

Golang数据类型 切片(slice)的相关文章

Golang 入门 : 切片(slice)

切片(slice)是 Golang 中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合.切片是围绕动态数组的概念构建的,可以按需自动增长和缩小.切片的动态增长是通过内置函数 append() 来实现的,这个函数可以快速且高效地增长切片,也可以通过对切片再次切割,缩小一个切片的大小.因为切片的底层也是在连续的内存块中分配的,所以切片还能获得索引.迭代以及为垃圾回收优化的好处.本文将介绍 Golang 切片的基本概念和用法,演示环境为 ubuntu 18.04 & go1.10.1. 切

golang切片slice

切片slice是引用类型 len()函数获取元素的个数 cap()获取数组的容量 1.申明方式 (1)var a []int 与数组不同的是他不申明长度(2)s2 := make([]int, 3, 10) //元素的类型,元素的数量,元素的容量  fmt.Println(len(s2), cap(s2)) 输出元素的数量和容量 2.讲数组转换成切片 2 a := [10]int{} 3 fmt.Println(a) 4 s1 := a[:10] //取前10个元素 [5:]取 5-最后的元素

Golang中的Slice与数组

1.Golang中的数组 数组是一种具有固定长度的基本数据结构,在golang中与C语言一样数组一旦创建了它的长度就不允许改变,数组的空余位置用0填补,不允许数组越界. 数组的一些基本操作: 1.创建数组: func main() { var arr1 = [...]int{1,2,3,4} //[...]默认为元素的数量即为数组的长度 fmt.Println(len(arr1)) //4 arr1[4] = 5 //panic 数组越界 fmt.Println(arr1) var arr2 =

Go 灵活多变的切片Slice

我们知道数组定义好之后其长度就无法再修改,但是,在实际开发过程中,有时候我们并不知道需要多大的数组,我们期望数组的长度是可变的, 在 Go 中有一种数据结构切片(Slice) 解决了这个问题,它是可变长的,可以随时向Slice 里面添加数据. 1 什么是切片(Slice) 在 Go 源码中是这样定义切片的,源码地址:https://github.com/golang/go/blob/master/src/runtime/slice.go type slice struct { array uns

Go语言之切片Slice练习

切片Slice理论知识 其本身并不是数组,它指向底层的数组 作为编程数组的替代方案,可以关联底层数组的局部或者全部 为引用类型 可以直接创建或从底层数组获取生成 使用len()获取元素个数,cap()获取容量 一般使用make()创建 如果多个slice指向相同底层数组,其中一个的值改变会影响全部 make([]T, len, cap) 其中,cap可以省略,则和len的值相同 len表示存数的元素个数,cap表示容量 slice与底层数组的关系 Reslice Reslice时索引以被slic

(一)Python入门-2编程基本概念:16字符串-切片slice操作-逆序

一:字符串切片slice操作 切片 slice 操作可以让我们快速的提取子字符串.标准格式为: [起始偏移量start:终止偏移量end:步长 step] 典型操作(三个量为正数的情况)如下: 操作和说明 示例 结果 [:] 提取整个字符串 “abcdef”[:] “abcdef” [start:]从start 索引开始到结尾 “abcdef”[2:] “cdef” [:end]从头开始直到end-1 “abcdef”[:2] “ab” [start:end]从start 到 end-1  “a

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

一 数组简介: 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其长度.当作为方法的参数传入时将复制一份数组而不是引用同一指针.数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度.注意:和C中的数组相比,又是有一些不同的 1. Go中的数组是值类型,换句话说,如果你将一个数组赋值给另外一个数组,那么,实际上就是将整个数组拷贝一份2. 如果Go中的数组作为函数的参数,那么实际传递的参数是

Go语言golang调用sort.Slice实现struct切片的快速排序

sort.Slice声明 func Slice(slice interface{}, less func(i, j int) bool) { rv := reflectValueOf(slice) swap := reflectSwapper(slice) length := rv.Len() quickSort_func(lessSwap{less, swap}, 0, length, maxDepth(length)) } 实际使用 和C++的sort模板类似,只需要实现less函数,Go特

Python 切片(slice)的扩展使用方法

# -*- coding: utf-8 -*- __author__ = 'xy' #切片(slice)的扩展使用方法 #1 用步长索引来进行扩展的切片操作 # slice[1:2:3]其中第3个位置表示步长,默认为1 #简单的str翻转: s = 'abcde' print s[::-1] # >>>'edcba' #间隔一个字符取值: print s[::2] # >>>'ace' #2 切片索引不越界 print ('a', 'b', 'c')[-100:100]