美文网首页
Go语言 数组和切片区别

Go语言 数组和切片区别

作者: 醉倾城1 | 来源:发表于2020-09-05 08:57 被阅读0次

首先看下它们的定义:

数组:类型 [n]T 表示拥有 n 个 T 类型的值的数组。
切片:类型 []T 表示一个元素类型为 T 的切片。
数组的例子:

var x[4]int = [4]int{1,2,3,4}
var y[4]int = x
fmt.Println(x,y)
y[0]=123
fmt.Println(x,y) 

输出结果如下,可以发现y的内容变了,但是X没有变

[1 2 3 4] [1 2 3 4]
[1 2 3 4] [123 2 3 4]

对上述代码稍加变动,看一个切片的例子:

var x[]int = []int{1,2,3,4}
var y[]int = x
fmt.Println(x,y)
y[0]=123
fmt.Println(x,y) 

输出结果如下,可见x和y的内容都变了

[1 2 3 4] [1 2 3 4]
[123 2 3 4] [123 2 3 4]

另有如下初始化、赋值方式都是语法错误的

var x[4]int = []int{1,2,3,4}
-----------------------------
var x[]int = [4]int{1,2,3,4}
-----------------------------
var x[]int = []int{1,2,3,4}
var y[4]int = x
-----------------------------
var x[4]int = [4]int{1,2,3,4}
var y[]int = x

可以得出结论:如官方文档所述,数组是需要指定个数的,而切片则不需要。数组赋值也可是使用如下方式,忽略元素个数,使用“...”代替

x:= [...]int{1,2,3,4}
y := x
fmt.Println(x,y)
y[0]=123
fmt.Println(x,y)

相关文章

  • <>

    数组和切片 切片和数组的区别 数组是属于值类型。结构体,基础类型数据也属于值类型。 注意GO语言对于“传值和传引用...

  • golang入门到放弃:3.数组、切片、map

    数组 切片 数组和切片的区别 数组必须要指定长度,如果定义时不指定长度,go语言也会根据元素中的个数自动设置值数组...

  • Go语言切片

    // //Go语言切片 // /* // go语言切片是对数组的抽象 // Go 数组的长度不可改变,在特定场景中...

  • Go语言 数组和切片区别

    首先看下它们的定义: 数组:类型 [n]T 表示拥有 n 个 T 类型的值的数组。切片:类型 []T 表示一个元素...

  • Go基础面试题

    4.说说Go语言中,数组和切片的区别?切片的底层 数组 数组的长度是类型的一部分,不同的长度的数组,类型不是一致...

  • 七、Go切片

    七、Go语言切片(Slice) Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就...

  • Go 切片和数组

    数组 go创建数组和 c 语言类似,有如下两种方式: 切片 切片声明和数组类似,只是没有传递长度 创建二维切片,并...

  • Go数组和切片区别

    数组是值传递,切片是引用传递 切片可扩容 切片多一个cap属性 切片底层用数组实现

  • go语言 数组和切片

    新手对于数组和切片要如何区分,概念比较模糊,看看下面的说明就懂了 记住,如果在[]运算符里指定了一个值,那么创建的...

  • Go语言数组和切片

    数组 数组概念 数组就是用于保存一组相同类型的数据 定义格式 操作数组的格式 数组的初始化 (赋值) 先定义再初...

网友评论

      本文标题:Go语言 数组和切片区别

      本文链接:https://www.haomeiwen.com/subject/dsczsktx.html