Go的数组
数组
数组是同一类型元素的集合。所有元素全部都应该是同一种类型。例如,整数集合 5,8,9,79,76 形成一个数组。Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(当然,如果是 interface{} 类型数组,可以包含任意类型)
一、数组的定义
1、声明数组
语法:
var 数组名 [元素个数]元素类型 // 数组大小固定,不能多
数组的默认值和数组存放的类型有关。
var lis [3] int
fmt.Println(lis) // [0 0 0] int的默认值是0
2、初始化设值
语法:
var 数组名 [元素个数]元素类型 = [元素个数]元素类型{元素1,元素2,元素3}
定义每个元素
//var lis [3]int = [3]int{1, 2, 3}
// lis := [3]int{1, 2, 3}
var lis = [3]int{1, 2, 3}
fmt.Println(lis) // [1 2 3]
fmt.Printf("%T",lis) // [3]int
3、指定位置设值
只想设置某个位置的元素。
语法:
[元素个数]元素类型{索引:值} ,其它都是默认值
var a [30]int=[30]int{28:1,23:999}
4、不指定长度初始化(了解)
[]内不指定长度,而是[...],这样声明的数组长度为初始化的最大长度。而不是变长数组。
了解 (这不是可变长)
a :=[...]int{28:1,23:999} //长度为29
a :=[...]int{2,3,4} //长度为3
// a :=[3]int{2,3,4} //长度为3
二、数组的使用
索引取值
var lis = [3]int{2, 4, 6}
fmt.Println(lis[0],lis[2])
2 6
直接修改值
var lis = [3]int{2, 4, 6}
fmt.Println(lis)
lis[1] = 666
fmt.Println(lis)
[2 4 6]
[2 666 6]
三、数组的类型
[元素个数]元素类型 // 合在一起才是一个数组的类型,数组的大小也是类型的一部分
数组是值类型,而不是引用类型(地址)。
go语言中函数传参,都是copy传递。不管是值类型还是引用类型。都会copy一份,传进这个函数。
如果是值类型的变量,传进函数后被修改,则不会影响被copy的变量。因为已经是不同的变量了。
但如果是引用类型的变量,传进函数后被修改,是会影响到其他的引用这个地址的变量的。因为直接将这个地址的值修改了。
四、数组的长度
用内置函数len()来获取数组的长度。
var a =[30]int{2,4,6}
fmt.Println(len(a)) //3
五、迭代数组
1、初始化迭代
var lis = [3]int{2,4,6}
for i:=0;i<len(lis);i++{
fmt.Println(lis[i])
}
2
4
6
2、使用range迭代
//for i:=range a{} //只用一个值来接收,就是索引
//for i,v:=range a{} //如果两个值来接收,就是索引(i)和值(v)
//for _,v:=range a{} //只接受值
var lis = [3]int{2,4,6}
for i,v:=range lis{
fmt.Println(i,v)
}
0 2
1 4
2 6
六、多维数组
var a [3][3]int
fmt.Println(a)
[[0 0 0] [0 0 0] [0 0 0]]
----------------------------------
var a [3][3]int=[3][3]int{{1,2,3},{4,5,6},{7,8}}
a[0][1]=999
fmt.Println(a)
[[1 999 3] [4 5 6] [7 8 0]]
----------------------------------
var a [3][3][3]int
fmt.Println(a)
[
[[0 0 0] [0 0 0] [0 0 0]]
[[0 0 0] [0 0 0] [0 0 0]]
[[0 0 0] [0 0 0] [0 0 0]]
]
Go的数组的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- 了解PHP中的Array数组和foreach
1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组 . 2.例子:一般的数组 这里,我 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
- js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...
- javascript数组查重方法总结
文章参考地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277 题目 对下列数组去重: var arr = ['aa', ...
- 掌握javascript中的最基础数据结构-----数组
这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
随机推荐
- 使用汇编语言实现memcpy
把内核放入内存,究竟需做什么 写满实现内核功能的代码的文件会被编译成一个ELF文件.这个ELF文件不同于LOADER BIN文件.后者实质是一个没有使用DOS命令的COM文件.因此,只需将它原封不动地 ...
- 【noi 2.6_8464】股票买卖(DP)
题意:N天可买卖2次股票,问最大利润. 解法:f[i]表示前 i 天买卖一次的最大利润,g[i]表示后 i 天. 注意--当天可以又买又卖,不要漏了这个要求:数据较大. 1 #include<c ...
- How many integers can you find HDU - 1796 容斥原理
题意: 给你一个数n,找出来区间[1,n]内有多少书和n不互质 题解: 容斥原理 这一道题就让我真正了解容斥原理的实体部分 "容斥原理+枚举状态,碰到奇数加上(n-1)/lcm(a,b,c. ...
- Codeforces Round #531 (Div. 3) E. Monotonic Renumeration (构造)
题意:给出一个长度为\(n\)的序列\(a\),根据\(a\)构造一个序列\(b\),要求: 1.\(b_{1}=0\) 2.对于\(i,j(i\le i,j \le n)\),若\(a_{i ...
- (数据科学学习手札106)Python+Dash快速web应用开发——回调交互篇(下)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- ucosIII学习笔记——钩子函数
一开始听见钩子函数感觉很莫名其妙,更不知道它有何作用,这是第一篇博客,也是学习ucosIII操作系统的一个开始吧. 在系统中有开发者自己创建的任务也有系统内部任务 ,UCOSIII中有五个系统任务,分 ...
- Mac下anaconda的安装和基本使用
Mac下anaconda的安装和基本使用 安装 在conda官网下载安装conda. 打开terminal输入conda -V,回车显示conda的版本说明安装成功. 将conda更新到最新版本 co ...
- Nginx基础 - 常用模块配置
1.Nginx状态监控http_stub_status_module记录Nginx客户端基本访问状态信息 location /mystatus { stub_status on; access_log ...
- OpenStack-知识点补充
登录计算节点查看进程 [root@compute ~]# ps aux | grep kvm root 824 0.0 0.0 0 0 ? S< 10:19 0:00 [kvm-irqfd-cl ...
- Zabbix 自动发现 & 自动注册
自动发现 Zabbix 为用户提供了高效灵活的网络自动发现功能,有以下优点: 加快 Zabbix 部署 简化管理 无需过多管理,也能在快速变化的环境中使用 Zabbix Zabbix 网络发现基于以下 ...