美文网首页Go语言实践Go
Go学习笔记-数组和切片区别

Go学习笔记-数组和切片区别

作者: 赵客缦胡缨v吴钩霜雪明 | 来源:发表于2019-07-04 17:09 被阅读72次

这里不介绍数组和切片的使用技巧,主要看下2者的区别。

首先看下它们的定义:

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

看一个数组的例子:

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

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

[1 2 3] [1 2 3]
[1 2 3] [999 2 3]

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

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

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

[1 2 3] [1 2 3]
[999 2 3] [999 2 3]

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

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

可以得出结论:如官方文档所述,数组是需要指定个数的,而切片则不需要

数组赋值也可是使用如下方式,忽略元素个数,使用...代替

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

相关文章

  • Go学习笔记-数组和切片区别

    这里不介绍数组和切片的使用技巧,主要看下2者的区别。 首先看下它们的定义: 数组:类型 [n]T 表示拥有 n 个...

  • Go数组和切片区别

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

  • <>

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

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

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

  • go学习笔记(数组&切片)

    数组 数组是存储在一段连续内存中的固定长度的数据类型。数组中的数据类型是一致的可以是内置的类型,也可以是自定义的数...

  • go语言数组、切片、映射

    go的一些语法有点晦涩,这些很基础,做一下笔记 数组 数组声明 数组声明初始化 切片 切片的声明 切片的追加 切片...

  • Go基础面试题

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

  • Go语言 数组和切片区别

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

  • Go 数组和切片的区别

    内部实现 数组数组是一个长度固定的数据类型,用于存储一段具有相同类型的元素的连续块。数组存储的类型可以是内置类型,...

  • 第03天(复合类型)_03

    13_数组做函数参数.go 14_数组指针做函数参数.go 15_切片的长度和容量.go 16_切片的创建.go ...

网友评论

    本文标题:Go学习笔记-数组和切片区别

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