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 ...
随机推荐
- NodeRED常用操作
NodeRED常用操作 记录使用在云服务器操作NodeRED过程中常用的一些过程或方法 重启NodeRED 通过命令行重启 我的NodeRED在pm2的自启动管理下,因此使用pm2进行重启 pm2 r ...
- linux(8)Linux 查看端口占用情况
前言 平常使用linux,我们经常需要查看哪个服务占用了哪个端口,接下来就为大家介绍了2种 Linux 查看端口占用情况可以使用 lsof 和 netstat 命令. 1. lsof -i:端口号 用 ...
- linux(1)Mac上传文件到Linux服务器
前言 我们使用mac时,想让本地文件上传至服务器,该怎么办呢 windows系统,我们可以使用xftp或者rz命令,那么mac呢? mac系统,我们可以使用sftp.scp或者rz命令,本文介绍sft ...
- 深入理解Js中的this
深入理解Js中的this JavaScript作用域为静态作用域static scope,但是在Js中的this却是一个例外,this的指向问题就类似于动态作用域,其并不关心函数和作用域是如何声明以及 ...
- 南阳ccpc C题 The Battle of Chibi 树状数组+dp
题目: Cao Cao made up a big army and was going to invade the whole South China. Yu Zhou was worried ab ...
- Codeforces Round #552 (Div. 3) C. Gourmet Cat (数学,模拟)
题意:你要带着你的喵咪一起去旅行,你的喵在星期\(1,4,7\)吃喵粮\(x\),在星期\(2,6\)吃喵粮\(y\),在星期\(3,5\)吃喵粮\(z\),你只有\(a\)个\(x\),\(b\)个 ...
- PowerShell启用多跳远程控制
有些场景下,我们使用远程连接了某个Server,在远程Server中再想进行远程操作,就会提示错误.因为默认的认证信息只会传递一跳. 对此,微软官方文档给出的解决方案是:https://docs.mi ...
- Rsyncd 同步服务
目录 数据备份的策略 三种数据备份 三种数据备份的比较(转载) 不同数据备份类型组合说明(转载) Rsyncd 服务传输模式(remote synchronizetion deamon) 本地传输模式 ...
- 一篇文章图文并茂地带你轻松实践 HTML5 history api
HTML5 history api 前言 由于笔者在网络上没有找到比较好的关于 history api 的实践案例,有的案例过于杂乱,没有重点,有些案例只是告诉读者 api 是什么,却没告诉怎么用,本 ...
- 『数据结构与算法』二叉查找树(BST)
微信搜索:码农StayUp 主页地址:https://gozhuyinglong.github.io 源码分享:https://github.com/gozhuyinglong/blog-demos ...