go语言入门之数组----练气四层|🏆 掘金技术征文|双节特别篇

617 阅读2分钟

数组

数组的声明

var name [SIZE] type
var list [10] int

注意

  1. 数组长度必须是一个常量值
  2. 数组长度是数组类型的一部分,也就是说下面a,b两个数组是不同类型的
var a [10] int
var b [6] int

//不能这样做,a、b是不同类型的数组
a = b

数组初始化

方式一 指定数组长度初始化

var list1 = [5] int {1,2,3,4,5}

方式二 推断长度初始化

var list1 = [...] int {1,2,3,4,5}
//或者
list1 := [...] int {1,2,3,4,5}

多维数组的声明与初始化

方式一

var list = [2][2] int {
   {1,2},
   {1,2},
}

方式二

var list = [...][2] int {
   {1,2},
   {1,2},
}

注意

  1. 多维数组只有第一层可以使用...来让编译器推导数组长度。

数组的访问

与其他语言一样,数组可以通过下标来访问,例如array[index]

数组的遍历

在go语言中,数组有两种遍历方式,具体请看下面的demo

package main

import "fmt"

/**遍历数组
  @author 赖柄沣 bingfengdev@aliyun.com
  @date 2020-10-01 10:57:25
  @version 1.0
   */
func main() {
   var list =   [...] int{1,2,2,4,6}

// 遍历方式一
   for i:=0; i< len(list); i++{
      fmt.Print(list[i])
   }
fmt.Println()
// 遍历方式二
   for index := range list {
      fmt.Print(list[index])
   }


}

输出

12246
12246

数组是值类型

package main

import "fmt"

/**数组是值类型证明
  @author 赖柄沣 bingfengdev@aliyun.com
  @date 2020-10-01 10:57:25
  @version 1.0
   */
func main() {
   var list =   [...] int{1,2,2,4,6}
   var list2 = list

   /**
   改变list2的值,如果数组是引用类型,那么list2和list指向同一个地址
   如果list2发生改变,则list也会发生改变
   否则,数组是值类型
   赋值语句会将数组值拷贝一份给副本,则改变副本的值对原数组不会产生影响
    */
   for index := range list2{
      list2[index] = 1

   }

   fmt.Print("原数组",list)
   fmt.Println()
   fmt.Print("副本",list2)

}

输出

原数组[1 2 2 4 6]
副本[1 1 1 1 1]

注意:

  1. 数组支持 “==“、”!=” 操作符,因为内存总是被初始化过的。
  2. [n]*T表示指针数组,*[n]T表示数组指针 。

写在最后

下一篇文章将学习切片(slice)的内容。