golang基础 —— 切片和数组的区别

Posted 猎人在吃肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang基础 —— 切片和数组的区别相关的知识,希望对你有一定的参考价值。

切片和数组的区别:

● 切片是指针类型,数组是值类型

● 数组的长度是固定的,而切片不是(切片是动态的数组)

● 切片比数组多一个属性:容量(cap)

● 切片的底层是数组

切片是指针类型,数组是值类型,那么区别体现在哪里呢?

例子

package main

import "fmt"

func main() 

	// 切片
	numbers := []int1, 2, 3, 4, 5, 6
	for index, value := range numbers 
		if index == len(numbers)-1 
			numbers[0] += value
		 else 
			numbers[index+1] += value
		
	
	fmt.Println("切片:", numbers)


	// 数组
	numbers2 := [...]int1, 2, 3, 4, 5, 6
	for index, value := range numbers2 
		if index == len(numbers2)-1 
			numbers2[0] += value
		 else 
			numbers2[index+1] += value
		
	
	fmt.Println("数组:", numbers2)

切片,每个元素都变成了前一个元素改变后的值和当前元素的和;
数组,每个元素都变成了当前元素和前一个元素的和。

结果为:

切片: [22 3 6 10 15 21]
数组: [7 3 5 7 9 11]

分析:

for循环时,numbers 中的元素是1,2,3,4,5,6 。接收 for 循环的变量为 indexvalueindex 都是[0,1,2,3,4,5]

value 不同,数组为 值传递 ,所以遍历数组时,value1,2,3,4,5,6

切片传递的是 指针 ,所以每次累加,都是改变后的 值累加

以上是关于golang基础 —— 切片和数组的区别的主要内容,如果未能解决你的问题,请参考以下文章

golang基础---Slice切片

Golang 中数组(Array)和切片(Slice)的区别

Golang中数组和切片的区别与联系

golang中数组与切片的区别

golang中不定参数与数组切片的区别

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