生鲜电商网站建设策划书,应用商店下载安装正版,营销策划方案案例,网站的经费预算前言
大家好#xff0c;我是沐风晓月#xff0c;本文go语言入门-掌握go语言函数收录于《go语言学习专栏》专栏#xff0c;此专栏带你从零开始学习go语言#xff0c;持续更新中#xff0c;欢迎点赞收藏。 #x1f3e0;个人主页#xff1a;我是沐风晓月 #x1f9d1;个人…前言
大家好我是沐风晓月本文go语言入门-掌握go语言函数收录于《go语言学习专栏》专栏此专栏带你从零开始学习go语言持续更新中欢迎点赞收藏。 个人主页我是沐风晓月 个人简介大家好我是沐风晓月双一流院校计算机专业阿里云博客专家 座右铭先努力成长自己再帮助更多的人一起加油进步 欢迎大家这里是CSDN我总结知识的地方喜欢的话请三连有问题请私信 文章目录前言一. 数组的介绍1.1 什么是数组?1.2 数据的声明及语法二. 数组的初始化2.1 指定长度和初始值2.2 不指定数组长度来初始化数组2.3 指定长度通过索引值来初始化2.4 不指定长度通过索引值进行初始化2.5 数组的访问三. 数组的比较3.1 数据类型相同但长度不同3.2 数据类型相同且长度相同四. 数组的遍历五 . 二维数组5.1 二维数组的介绍5.2 二维数组的遍历总结一. 数组的介绍
1.1 什么是数组?
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。
数组可以由0个元素或者多个元素组成但不能增长和收缩。go语言中数组是一种值类型元素可以被修改。数组的元素索引从0开始
1.2 数据的声明及语法
Go 语言数组声明需要指定元素类型及元素个数语法格式如下
var varName [SIZE]var Type语法说明如下所示
varName数组变量名数组声明及使用时的变量名。SIZE元素数量数组的元素数量可以是一个表达式但最终通过编译期计算的结果必须是整型数值元素数量 不能含有到运行时才能确认大小的数值。Type数组类型可以是任意基本类型包括数组本身类型为数组本身时可以实现多维数组。
举例 定义一个数组mufeng长度为10类型为float32
var mufeng [10] float32二. 数组的初始化
2.1 指定长度和初始值
指定长度和初始化值初始化数组中 {} 中的元素个数不能大于 [] 中的数字
package mainimport fmtfunc main() {var mufeng [5]float32{1.0, 2.0, 3.0, 4.0, 5.0}fmt.Println(mufeng)
}
这里要注意初始值的元素之间需要用,隔开当[5]中指定为5个后面的大括号就不应该能大于5但可以小于5. 小于5的时候会有默认值补全。 比如数字类型默认值就是0.
package mainimport fmtfunc main() {var mufeng [5]float32{1.0, 2.0, 3.0, 4.0}fmt.Println(mufeng[4]) // 结果就为0
}可以看到当我们获取mufeng下标为4的值的时候结果就是0.
2.2 不指定数组长度来初始化数组
当我们不指定长度的时候也就是[]中不写入内容GO语言默认会根据元素的个数来设置数组的大小。
package mainimport fmtfunc main() {var mufeng []int{1, 2, 3, 4}fmt.Println(mufeng)}2.3 指定长度通过索引值来初始化
此时我们使用索引值来初始化1:1就表示下标为1的元素初始值为1. 下标默认初始值为0我们看下面的代码案例
package mainimport fmtfunc main() {mufeng : [4]int{1:1, 2: 2}fmt.Println(mufeng)//执行结果为[0 1 2 0 ]
}
由执行结果可以看出下标0 未定义所以输出结果为0.
2.4 不指定长度通过索引值进行初始化
如果我们不指定长度系统会默认以你索引值的最大值来决定长度。 比如
package mainimport fmtfunc main() {mufeng : []int{1: 1, 4: 2}fmt.Println(mufeng)//执行结果为[0 1 0 0 2]
}
这个脚本中虽然没有指定长度但是索引值最大是4而且索引值为4的时候初始化为2.未初始化的都是0.
所以执行结果为 [0 1 0 0 2]。
2.5 数组的访问
数组的每个元素都可以通过索引下标来访问索引下标的范围是从 0 开始到数组长度减 1 的位置内置函数 len()可以返回数组中元素的个数。
package mainimport fmtfunc main() {mufeng : []int{1: 1, 4: 2}fmt.Println(mufeng)//执行结果为[0 1 0 0 2]var mufeng1 [4]int8{2, 4, 6, 8}fmt.Println(对mfueng1取索引为3的值, mufeng1[3])//对mfueng1取索引为3的值 8fmt.Println(统计元素个数, len(mufeng1))//统计元素个数 4
}
想要获取第几位的值就根据下表去访问比如第一位的值 mufeng1[0],打印最后一个元素但你不知道最后一个是第几位就可以用len()
package mainimport fmtfunc main() {mufeng : []int{1: 1, 4: 2}fmt.Println(mufeng[len(mufeng)-1])//执行结果为2
}这里的计算公式是 先统计一共有多少个元素len(mufeng), 而下标值就等于总元素的个数减1. len(mufeng)-1.
有了下标值之后就可以根据下标获取元素值 也就是mufeng(len[(mufeng) -1]).
三. 数组的比较
3.1 数据类型相同但长度不同
我们学字符串类型的时候经常会把 a b把b复制给a 但在数组这边需要注意几个地方
虽然数据类型相同但长度不相等的两个数组肯定是不相等的。 比如 [3]int 和[4] int这其实是两种不同的数组类型。
mufeng : [2] int{1,2}
mufeng[3]int{1,2,3} 这里的赋值方法是错误的因为他们两个的长度不相等3.2 数据类型相同且长度相同
如果两个数组类型相同包括数组的长度数组中元素的类型的情况下我们可以直接通过较运算符和!来判断两个数组是否相等只有当两个数组的所有元素都是相等的时候数组才是相等的不能比较两个类型不同的数组否则程序将无法完成编译。 可以看到当mufeng1 和mufeng2 以及mufeng4对标的时候因为[]里的值不同所以无法编译通过。
四. 数组的遍历
一维数组的声明及遍历代码一个标准的for循环遍历及一个range调用遍历
for...range迭代的性能会更好一些他的语法
for index,value : range myArray{//循环体
}
格式说明
index保存每个元素索引的变量value保存每个元素值的变量myArray正在处理的数组
package mainimport fmtfunc main() {var mufeng3 []int{1, 2, 3, 4, 5}//for循环变量的方法//这里是把两种方法写一起了所以把上面的注释掉了//for i : 0; i len(mufeng3); i {// fmt.Println(mufeng3[i])//}//fmt.Println(\n)//使用range的方法for _, value : range mufeng3 {fmt.Println(value, \t)}
}
注意 这里是把两种方法写在一起了所以把上面的for循环注释掉了 。
推荐使用for range的方式。
补充 使用fmt输出数组相关的信息
package mainimport fmtfunc main() {var mufeng3 [5]int{1, 2, 3, 4, 5}fmt.Println(mufeng3)fmt.Printf(%#v, mufeng3)fmt.Printf(\n)fmt.Printf(%T, mufeng3)
}
输出结果
[1 2 3 4 5]
[5]int{1, 2, 3, 4, 5}
[5]int 五 . 二维数组
5.1 二维数组的介绍
有一个下标我们叫一维数组有两个下标的就是二维数组一般日常开发中用到三维数组以上的就比较少了。
二维数组的案例
package mainimport fmtfunc main() {var mufeng [3][4]intmufeng[1][2] 3mufeng[2][1] 4fmt.Println(mufeng)
}// 执行结果
//[[0 0 0 0] [0 0 3 0] [0 4 0 0]]为了便于理解在这里我们把[1][2],定义为 第一个是[1]是a第二个是[2]是b. 可以看到我们定义的mufeng[1][2] 3,实际上就是 a1的b2的位置等于3. 如图所示 5.2 二维数组的遍历
package mainimport fmtfunc main() {//一维数组定义//var 数组名 [元素个数] 数据类型//二维数组//var 数组名 [行个数][列个数] 数据类型var mufeng [3][4]int// 通过行和列的下标找到具体元素mufeng[1][2] 1 //赋值操作mufeng[2][1] 13mufeng[0][3] 33//fmt.Print(arr)for i : 0; i 3; i {for j : 0; j 4; j {fmt.Print(mufeng[i][j], )}fmt.Println()}}
执行结果
0 0 0 33
0 0 1 0
0 13 0 0 总结
以上就是今天的全部内容希望对你有用。 好啦这就是今天要分享给大家的全部内容了我们下期再见 本文由沐风晓月原创首发于CSDN博客 博客主页mufeng.blog.csdn.net 日拱一卒无尽有功不唐捐终入海 喜欢的话记得点赞收藏哦