当前位置: 首页 > news >正文

golang基础语法(四) 数组

目录

一、数组的声明

1、从数组中取值

(1)索引下标

(2)for range

2、给数组赋值

(1)初始化的时候赋值

(2)通过索引下标赋值

(3)数组比较

二、多维数组

1、多维数组的声明

(1)声明一个二维整型数组,两个维度的长度分别是 4 和 2

(2)使用数组字面量来声明并初始化一个二维整型数组

(3)声明并初始化数组中索引为 1 和 3 的元素

(4)声明并初始化数组中指定的元素

2、取值

(1)通过索引下标取值

(2)循环取值

2、赋值

(1)单独赋值

(2)数组间整体赋值

(3)数组间单独赋值


数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。

因为数组的长度是固定的,所以在Go语言中很少直接使用数组。

一、数组的声明

var 数组变量名 [元素数量]Type
  • 数组变量名:数组声明及使用时的变量名。
  • 元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有到运行时才能确认大小的数值。
  • Type:可以是任意基本类型,包括数组本身,类型为数组本身时,可以实现多维数组。

例子:

//默认数组中的值是类型的默认值
var arr [3]int

1、从数组中取值

(1)索引下标

    fmt.Println(arr[0])fmt.Println(arr[1])fmt.Println(arr[2])

(2)for range

for index,value := range arr{fmt.Printf("索引:%d,值:%d \n",index,value)
}

2、给数组赋值

(1)初始化的时候赋值

var arr [3]int = [3]int{1,2,3}(1)如果第三个不赋值,就是默认值0
var arr [3]int = [3]int{1,2}
(2)可以使用简短声明
arr := [3]int{1,2,3}
(3)如果不写数据数量,而使用...,表示数组的长度是根据初始化值的个数来计算
arr := [...]int{1,2,3}

  如果想要只初始化第三个值怎么写?

//给索引为2的赋值 ,所以结果是 0,0,3
arr := [3]int{2:3}

(2)通过索引下标赋值

    var arr [3]intarr[0] = 5arr[1] = 6arr[2] = 7

一定要注意,数组是定长的,不可更改,在编译阶段就决定了

小技巧 如果觉的每次写 [3]int 有点麻烦,你可以为 [3]int 定义一个新的类型。

type arr3 [3]int
//这样每次用arr3 代替[3]int
    var arr arr3arr[0] = 2for index,value := range arr{fmt.Printf("索引:%d,值:%d \n",index,value)}

(3)数组比较

如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,我们可以直接通过较运算符(==!=)来判断两个数组是否相等,只有当两个数组的所有元素都是相等的时候数组才是相等的,不能比较两个类型不同的数组,否则程序将无法完成编译。

a := [2]int{1, 2}
b := [...]int{1, 2}
c := [2]int{1, 3}fmt.Println(a == b, a == c, b == c) // "true false false"
d := [3]int{1, 2}
fmt.Println(a == d) // 编译错误:无法比较 [2]int == [3]int

二、多维数组

Go语言中允许使用多维数组,因为数组属于值类型,所以多维数组的所有维度都会在创建时自动初始化零值,多维数组尤其适合管理具有父子关系或者与坐标系相关联的数据。

1、多维数组的声明

  1. array_name 为数组的名字
  2. array_type 为数组的类型
  3. size1、size2 等等为数组每一维度的长度
var array_name [size1][size2]...[sizen] array_type

二维数组是最简单的多维数组,二维数组本质上是由多个一维数组组成的

(1)声明一个二维整型数组,两个维度的长度分别是 4 和 2

var array [4][2]int

(2)使用数组字面量来声明并初始化一个二维整型数组

array = [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}

(3)声明并初始化数组中索引为 1 和 3 的元素

array = [4][2]int{1: {20, 21}, 3: {40, 41}}

(4)声明并初始化数组中指定的元素

array = [4][2]int{1: {0: 20}, 3: {1: 41}}

2、取值

(1)通过索引下标取值

fmt.Println(array[1][0])

(2)循环取值

for index,value := range array{fmt.Printf("索引:%d,值:%d \n",index,value)}

2、赋值

(1)单独赋值

// 声明一个 2×2 的二维整型数组
var array [2][2]int
// 设置每个元素的整型值
array[0][0] = 10
array[0][1] = 20
array[1][0] = 30
array[1][1] = 40

(2)数组间整体赋值

只要类型一致,就可以将多维数组互相赋值,如下所示,多维数组的类型包括每一维度的长度以及存储在元素中数据的类型:

// 声明两个二维整型数组 [2]int [2]int
var array1 [2][2]int  
var array2 [2][2]int// 为array2的每个元素赋值
array2[0][0] = 10
array2[0][1] = 20
array2[1][0] = 30
array2[1][1] = 40// 将 array2 的值复制给 array1
array1 = array2

(3)数组间单独赋值

因为数组中每个元素都是一个值,所以可以独立复制某个维度,如下所示:

a.将 array1 的第一行赋值给一维数组

var array3 [2]int = array1[1]

b.将数组中某个值给整形

var value int = array1[1][0]
http://www.dtcms.com/a/404036.html

相关文章:

  • 开源手机网站模板刚做的网站为什么百度搜不到
  • 云锁客户端连不上服务器处理
  • 网站建设优化服务熊掌号网站怎么显示百度名片
  • LNMP架构(分离部署)PHP与数据库交互示例
  • Git----常用指令入门
  • 传输无界 金士顿双接口U盘上新抽电脑
  • Real-Time MDNet
  • 从零开始:接入suno api V5.0模型:认识 Suno AI音乐 - 第1篇
  • wordpress成品图开封做网站优化
  • 陕西省住房建设厅官方网站开发软件需要多少成本
  • 软硬件基本相同的两个设备,AE表现不一致的原因定位
  • 湖南网站开发公司电话网络设计与制作
  • 天数智芯智铠100性能测试
  • datawhale玩转通义四大新模型 202509 第6次作业
  • 响应式品牌网站wordpress图片文字
  • 电子商城建设网站品牌建设实施纲要
  • 责任链设计模式详解
  • 学习2025.9.24
  • 视频 播放网站怎么做黄石企业网站建设
  • C#图像处理五大核心误区与解决方案‌
  • 珠海做网站公司哪家好国家住房与城乡建设部网站
  • 织梦做网站要多长时间免费那个网站
  • 新桥网站建设济南小程序网站制作
  • 一文读懂循环神经网络(RNN):原理、局限与LSTM解决方案
  • 以绿色为主的网站wordpress 单 中
  • Linux 企业级备份体系实战:cron/anacron/restic/rclone 对比与脚本总结
  • 做的网站太大怎么办神华科技 网站建设
  • 软件公司 网站建设费分录如何创建网站主页
  • 北京城乡和住房建设部网站济源新站seo关键词排名推广
  • 网站页脚的制作西部数码上传网站