golang
  • Introduction
  • 环境安装
    • vscode
    • liteide
  • 第一个Go程序
  • Go项目结构
  • Go语言命令
  • 变量
  • 数据类型
    • array
    • slice
    • map
    • struct
    • interface
    • string
    • channel
    • 类型转换
  • 循环语句
  • HTTP编程
  • init函数
Powered by GitBook
On this page
  • 简介
  • 声明语义
  • 初始化方法
  • 遍历
  • 赋值

Was this helpful?

  1. 数据类型

array

简介

数组的数据结构可以抽象为两个变量:

  • 一个不可变的指针(const ptr *type)

  • 长度(len)

声明语义

go语言的数组声明后即可使用,且数组变量没有零值:

var myarray [10]int
myarray[0] = 1

初始化方法

  • 显示初始化

arr1 := [3]int64{2, 4, 6}    // 定义一个长度为3的数组,并初始化
  • 默认初始化

arr1 := [3]int64    // 定义一个长度为3的数组,并将各个元素初始化为0
  • 使用其他数组初始化

arr1 := [3]int64{2, 4, 6}
arr2 := arr1

注意,以上的代码,arr1和arr2是两个完全不同的数组,即修改arr1不会影响arr2,反之亦然。

遍历

len()函数可以得到数组的长度,也可以用for ... range ...来遍历数组

arr := [3]string{"one", "two", "three"}
for index, value := range arr {
    fmt.Printf("index = %d, value = %s\n", index, value)
}

赋值

由于数组是内置类型,所以赋值操作与参数传递的语义是由go语言预定义好的。

当把一个数组赋值给另一个数组时,由于数组中的指针变量(ptr)不能修改,所以实际的效果是,把另一个数组的元素拷贝到左边数组中,这也要求数组赋值时,两个数组的len要一样大。

看如下代码:

arr1 := [3]int64{1, 2, 3}
arr2 := [3]int64{3, 4, 5}
arr1 = arr2
arr1[0] = 6
fmt.Println(arr1)
fmt.Println(arr2)

输出:

[6 4 5]
[3 4 5]
Previous数据类型Nextslice

Last updated 5 years ago

Was this helpful?