go 数组
数组的定义和 初始化
数组是同一类型的元素集合
- var a []int
- //定义⼀个数组
Go中数组下标从0开始,因此长度为n的数组下标范围:[0,n-1]
整数数组中的元素默认初始化为0,字符串数组中的元素默认初始化为" "
数组初始化
- var a []int
- a[] =
- a[] =
- a[] =
- //数组初始化
- var a []int = []int{, , }
- //定义时数组初始化
- a := []int{, , }
- //定义时数组初始化
- a := […]int{, , }
- //定义时数组初始化
- a := []int{}
- //定义时数组初始化
- a := []int{:}
- //定义时数组初始化
- package main
- import "fmt"
- // 数组初始化
- func test1() {
- var a []int
- a[] =
- a[] =
- a[] =
- fmt.Println(a) // [1 2 3 0 0]
- }
- func test2() {
- var a []int = []int{, , , , }
- fmt.Println(a) // [1 2 3 4 5]
- }
- func test3() {
- a := []int{, , , , }
- fmt.Println(a) // [1 2 3 4 5]
- }
- func test4() {
- a := [...]int{, , , , }
- fmt.Println(a) // [1 2 3 4 5]
- }
- func test5() {
- a := []int{}
- fmt.Println(a) //[5 0 0]
- }
- func test6(){
- a := []int{:, :}
- fmt.Println(a) //[0 0 20 30 0]
- }
- func main() {
- // test1()
- // test2()
- // test3()
- // test4()
- // test5()
- test6()
- }
数组的长度是类型的一部分
var a []int
a[] =
a[] =
a[] =
var b []int
b = a // 报错 a、b是不同类型的数组,不能赋值
- package main
- import "fmt"
- func test1() {
- // var a [3]int;
- // b := [4]int{1,2,3,4}
- // a = b 报错 不是 同类型的数组 不能直接 赋值
- var c []int
- d := []int{, , , }
- c = d
- fmt.Printf("c=%v\n", c)
- fmt.Printf("d=%v\n", d)
- }
- /*
- c=[1 2 3 4]
- d=[1 2 3 4]
- */
- func main() {
- test1()
- }
数组的遍历
方式一
- var a []int
- a[] =
- a[] =
- a[] =
- for i := ; i < len(a); i++ {
- }
方式二
- var a []int
- a[] =
- a[] =
- a[] =
- for index, val := range a {
- }
举例
- package main
- import "fmt"
- func test1() {
- a := []int{, , , , }
- for i := ; i < len(a); i++ {
- fmt.Printf("a[%d]=%d\n", i, a[i])
- }
- }
- func test2(){
- a := []int{, , , , }
- for index, val := range a {
- fmt.Printf("a[%d]=%d\n", index, val)
- }
- }
- /*
- a[0]=1
- a[1]=2
- a[2]=3
- a[3]=4
- a[4]=5
- */
- func main() {
- // test1()
- test2()
- }
二维数组
- package main
- import "fmt"
- func test1() {
- var a [][]int
- a[][] =
- a[][] =
- a[][] =
- a[][] =
- a[][] =
- a[][] =
- fmt.Println(a) // [[1 2] [3 4] [5 6]]
- }
- func test2() {
- var a [][]int = [][]int{{, }, {, }, {, }}
- for i := ; i < len(a); i++ {
- for j := ; j < len(a[i]); j++ {
- fmt.Printf("a[%d][%d] = %d\n", i, j, a[i][j])
- }
- fmt.Printf("\n")
- }
- }
- func test3(){
- var a [][]int = [][]int{{, }, {, }, {, }}
- for index, val := range(a){
- for i,v:= range(val){
- fmt.Printf("a[%d][%d] = %d\n", index, i ,v)
- }
- fmt.Printf("\n")
- }
- }
- func main() {
- // test1()
- // test2()
- test3()
- }
- package main
- import (
- "fmt"
- )
- func printarray(a [][]string) {
- for _, v1 := range a {
- for _, v2 := range v1 {
- fmt.Printf("%s ", v2)
- }
- fmt.Printf("\n")
- }
- }
- func main() {
- a := [][]string{
- {"lion", "tiger"},
- {"cat", "dog"},
- {"pigeon", "peacock"},
- }
- printarray(a)
- var b [][]string
- b[][] = "apple"
- b[][] = "samsung"
- b[][] = "microsoft"
- b[][] = "google"
- b[][] = "AT&T"
- b[][] = "T-Mobile"
- fmt.Printf("\n")
- printarray(b)
- }
数组拷贝和传参
数组是值类型
- var a []int
- a[] =
- a[] =
- a[] =
- b := a
- //b了数组a中所有元素
- b[] =
- fmt.Println(a, b)
a [10,20,30]
b [1000,20,30]
数组是值类型,函数传参也会拷贝
- func main() {
- var a []int
- a[] =
- a[] =
- a[] =
- modify(a)
- fmt.Println(a)
- }
- func modify(b []int) {
- b[] =
- return
- }
a [10,20,30]
b [1000,20,30]
练习
求数组所有元素之和
- package main
- import (
- "fmt"
- "math/rand"
- "time"
- )
- func test1(a []int) int {
- var sum int
- // for i := 0; i < len(a); i++ {
- // sum += a[i]
- // }
- for _, v := range a {
- sum += v
- }
- return sum
- }
- func run() int {
- rand.Seed(time.Now().Unix()) // 不设置 这个的话 rand.Intn() 取到的数据 都是 一样的
- var a []int
- for i := ; i < len(a); i++ {
- a[i] = rand.Intn() // rand.Intn(n) 随机取出 0 - n-1 的整数
- // a[i] = rand.Int() // rand.Intn() 随机取出 0- int最大范围之间的 的整数
- }
- sum := test1(a)
- return sum
- }
- func main() {
- sum := run()
- fmt.Println(sum)
- }
- package main
- import "fmt"
- // 找出数组中和为给定值的两个元素的下标,例如数组:[1,3,5,8,7],找出两个元素之和等于8的下标分别是(0, 4)和(1,2)
- func sumTwo(a []int, target int) {
- for i := ; i < len(a); i++ {
- b := target - a[i]
- for j := i + ; j < len(a); j++ {
- if b == a[j] {
- fmt.Printf("(%d, %d)\n", i, j)
- }
- }
- }
- }
- func main() {
- var a []int = []int{, , , , }
- sumTwo(a, )
- }
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 ...
随机推荐
- 1.红黑树和自平衡二叉(查找)树区别 2.红黑树与B树的区别
1.红黑树和自平衡二叉(查找)树区别 1.红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单. 2.平衡 ...
- 记一个鼠标略过时候的css动画
.circle{ width: 15px; height: 15px; background: rgba(0,0,0,0.7); border-radius: 50%; display: table- ...
- 【UOJ228】基础数据结构练习题(线段树)
[UOJ228]基础数据结构练习题(线段树) 题面 UOJ 题解 我们来看看怎么开根? 如果区间所有值都相等怎么办? 显然可以直接开根 如果\(max-sqrt(max)=min-sqrt(min)\ ...
- 洛谷 P3235 [HNOI2014]江南乐 解题报告
P3235 [HNOI2014]江南乐 Description 两人进行 T 轮游戏,给定参数 F ,每轮给出 N 堆石子,先手和后手轮流选择石子数大于等于 F 的一堆,将其分成任意(大于1)堆,使得 ...
- 洛谷 P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 解题报告
P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题意: 给定一个长\(N\)的序列,求满足任意两个相邻元素之间的绝对值之差不超过\(K\)的这个序列的排列有多少个? 范围: ...
- 【codeforces 553E】 Kyoya and Train
http://codeforces.com/problemset/problem/553/E (题目链接) 艹尼玛,CF还卡劳资常数w(゚Д゚)w!!系统complex被卡TLE了T_T,劳资写了一天 ...
- 3:JavaBean,EJB,POJO
JavaBeanJavaBean是公共Java类,但是为了编辑工具识别,需要满足至少三个条件: 有一个public默认构造器(例如无参构造器,) 属性使用public 的get,set方法访问,也就是 ...
- FPGA/SOPC学习转载
转自小時不識月http://www.cnblogs.com/yuphone/archive/2010/08/27/docs_plan.html 新网址为:http://andrewz.cn [连载计划 ...
- Chapter 5(串)
1.kmp #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <str ...
- np.argsort函数
np.argsort函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me numpy.argsort(a, axis=-1, kind='quicksort', order=None) 功能: ...