go语言之数组

数组是go语言编程中最常用的数据结构之一,数组中的每个数据被称为数组元素,一个数组中元素的个数被称为数组的长度。数组的声明方法:

var arr [32]int //声明一个长度为32的数组,数组中的元素为int
var arr [12]*int //声明一个长度为12的数组,数组中的元素为*int
var arr [3][5]int //声明一个3行5列二维数据,数组中元素为int

在go语言中,数组的长度在定义之后就不可以更改,在声明数组长度可以为一个常量或者一个常量表达式(常量表达式是指在编译期即可以计算结果的表达式)。数组的长度是该数组类型的一个内置常量,可以用go语言的内置函数len()来获取,例如:

arrLen := len(arr)

遍历数组的方式和字符串的遍历方式相同,第一种方式是使用数组下标来访问数组中的元素,数组的下标从0开始,例如:

for i := 0; i < len(arr); i++{
	fmt.Printf("arr[%d] = %v\n",i,arr[i])
}

第二种访问方式是使用关键字range,range具有两个返回值,第一个返回值为元素在数组中的下标,第二个返回值为元素的值,用于便捷地遍历容器中的元素,上面的遍历过程可以改写为如下的写法:

for index, val := range arr{
	fmt.Printf("arr[%d] = %v\n",index,val)
}

note:在go语言中数组是一个值类型,所有的值类型变量在赋值和作为参数传递时都将产生一次复制动作,如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制,因此,在函数体重无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本。代码如下:

package main

import "fmt"

func modify(arr [5]int) {
	for index, val := range arr {
		arr[index] = val + 1
	}
	fmt.Println("func modify arr = ", arr)
}

func main() {
	arr := [5]int{1, 2, 3, 4, 5}
	modify(arr)
	fmt.Println("func main arr = ", arr)
}

输出结果:

func modify arr =  [2 3 4 5 6]
func main arr =  [1 2 3 4 5]
从执行结果可以看出,函数modify()内操作的那个数组和main()函数中传入的数组是两个不同的实例。将在下一篇博客中讲解数组切片。可以解决函数modify()中操作的数组和main()函数中传入的数组是同一个数组。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值