charlieroro

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

首先看下它们的定义:

  • 数组:类型 [n]T 表示拥有 n 个 T 类型的值的数组。
  • 切片:类型 []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

 

可以得出结论:如官方文档所述,数组是需要指定个数的,而切片则不需要。与C语言不同,go的数组初始化的时候必须指明元素个数

相关文章:

  • 2021-07-20
  • 2021-07-01
  • 2022-12-23
  • 2021-11-28
  • 2019-05-19
  • 2021-08-28
  • 2022-12-23
  • 2018-06-19
猜你喜欢
  • 2021-04-07
  • 2023-04-02
  • 2021-07-29
  • 2021-09-06
  • 1970-01-01
  • 2022-02-18
  • 2022-02-19
相关资源
相似解决方案