golang中数组与切片的区别

初始化:数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变

数组:

a := [...]int{1,2,3}
a := [3]int{1,2,3}

切片:

a:= []int{1,2,3}
a := make([]int, 5)
a := make([]int, 5, 10)
函数传递:数组需要明确指定大小,切片不需要。数组是值传递,切片是地址传递
numbers2 := [...]int{1, 2, 3, 4, 5, 6}
maxIndex2 := len(numbers2) - 1
for i, e := range numbers2 {
   if i == maxIndex2 {
      numbers2[0] += e
   } else {
      numbers2[i+1] += e
   }
}
fmt.Println(numbers2)

numbers3 := []int{1, 2, 3, 4, 5, 6}
maxIndex3 := len(numbers3) - 1
for i, e := range numbers3 {
   if i == maxIndex3 {
      numbers3[0] += e
   } else {
      numbers3[i+1] += e
   }
}
fmt.Println(numbers3)

输出:

[7 3 5 7 9 11]
[22 3 6 10 15 21]

原文地址:https://www.cnblogs.com/TimLiuDream/p/9898186.html

时间: 2024-08-02 12:57:59

golang中数组与切片的区别的相关文章

GoLang笔记-数组和切片,本质是就是长度不可变的可变的区别

数组 Arrays 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其长度.当作为方法的入参传入时将复制一份数组而不是引用同一指针.数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度. 初始化 数组的初始化有多种形式,查看示例代码 , 在线运行示例代码 [5] int {1,2,3,4,5} 长度为5的数组,其元素值依次为:1,2,3,4,5 [5] int {1,2} 长度为5的数组

C#语言中数组与集合的区别(以List集合为例)

数组用于保存固定数量的数据,定长,占用内存少,遍历速度快: 集合保存的数据数量,可以在程序的执行过程中,不断发生变化,不定长,占用内存多,遍历速度慢: 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现. 下面以List集合为例,具体说明集合与数组的区别: 1.定义的格式 集合:List <数据类型> 变量名; 数组:数据类型 [ ] 变量名; 2.赋值 集合:变量名 = new List <数据类型> ( );  集合是不定长的,所以赋值时无须

Golang理解-数组和切片

数组 数组在Go中定义及特点 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成. 因为数组的长度是固定的,因此在Go语言中很少直接使用数组. 和数组对应的类型是Slice(切片),它是可以增长和收缩动态序列,slice功能也更灵活,但是要理解slice工作原理的话需要先理解数组. 默认情况下,数组的每个元素都被初始化为元素类型对应的零值,对于数字类型来说就是0.我们也可以使用数组字面值语法用一组值来初始化数组: var q [3]int = [3]int{1, 2,

C 中数组和指针的区别

联系: 1,一个通过数组和下标实现的表达式可等价地通过指针和偏移量实现. 2,当数组名传递给一个函数时,实际上传递的是该数组第一个元素的地址. 区别: 1,指针是一个变量,因此,在C语言中,语句pa=a和pa++都是合法的.但数组名不是变量,因此,类似于a=pa和a++形式的语句是非法的. 2,数组名代表定义的一整块内存,sizeof 得到的是整个数组的字节大小,而指针终究是一个变量,sizeof 得到的是该指针占用的字节数.

Golang中new和make的区别

总结几点:     new会分配结构空间,并初始化为清空为零,不进一步初始化     new之后需要一个指针来指向这个结构     make会分配结构空间及其附属空间,并完成其间的指针初始化     make返回这个结构空间,不另外分配一个指针 例子new:     var p *[]int = new([]int)     或     p := new([]int)     以上分配了一个slice结构,但是结构中的应该指向底层数组的ptr指针为空,故实际不能往这个slice里面存取数据   

JS中数组和对象的区别

C++-Golang的数组类型异同

1. 本文章的必要性 C++的存在像一把瑞士军刀,继承了C语言的设计理念--"充分相信程序员",几乎将所有的底层细节都暴露在外,程序员可以自由控制.在最近详细学习Golang的过程中,发现Golang中的常用结构的设计理念与C++截然不同,为许多常用的操作都提供了语言设计者所认为的"最佳实践".本文章仅讨论Golang中数组和切片. 2. Golang数组 和 C++数组(Array) 例子 C++ version // const常量长度初始化 // 显然非常量无

golang中的数组

概念:指同一系列同一类型数据的集合. 声明方法如下: [32]byte                          //长度为32的数组 [2*N] struct { x, y int32}  //复杂类型的数组 [1000]*float64                //指针数组 [3][5]int                          //二维数组 [2][2][2]float64              //等同于[2]([2]([2]float64)) 获取数组长

go 的数组和切片

什么是数组? 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成 数组定义的方法? 方式一 package main import "fmt" func arraytest() { var x [3] int fmt.Println(x) } // 输出 [0 0 0] func main() { arraytest() } 使用快速声明数组 x3 :=[3] int {112,78} fmt.Println(x3) 输出 [112 78 0] //