1.基础定义

声明时数组长度在数组成员类型前

语法:var variableName [length]int

//基本定义
var array1 [3]int
//定义并赋值
var array2 = [3]string{"o","k"}
array3 := [4]int{1,2}
//用'...'代替长度
array4 := [...]string{"o","de","k"}
//二维数组,两行三列
var doubleDimensionArr [2][3]int
//下标访问
fmt.Println(array4[1])
//直接输出
fmt.Println(array1,array2,array3,array4,doubleDimensionArr)

2.数组是值类型

golang中,数组是值类型的。表现为:[5]int、[6]int是不同的数据类型;用数组作为参数时会拷贝数组(符合golang的传参规范)。由于这个特性带来的不便利,一般不使用数组来进行开发,而使用slice或list

/*
调用func verify后,arr1内容不变
*/
var arr1 [3]int
verify(arr1)
func verify(arr [3]int) {
arr[1] = 1
fmt.Println(arr)
}

3.数组遍历

golang中有for循环和range两种方式遍历,for循环遍历时通过下标访问值,range方式通过接收range返回的下标和值进行遍历

/*
遍历数组
*/
func printArr(arr [3]int) {
//普通for循环
for n := 0;n<len(arr);n++{
fmt.Println(arr[n])
}
//使用range
for i,v := range arr{
fmt.Println(i,v)
}
//使用range+占位符
for _,v := range arr{
fmt.Println(v)
}
}

测试代码

package main
import "fmt"
/*
基本语法,编译器会赋初值
*/
func declareArray(){
//基本定义
var array1 [3]int
//定义并赋值
var array2 = [3]string{"o","k"}
array3 := [4]int{1,2}
//用'...'代替长度
array4 := [...]string{"o","de","k"}
//二维数组,两行三列
var doubleDimensionArr [2][3]int
//下标访问
fmt.Println(array4[1])
//直接输出
fmt.Println(array1,array2,array3,array4,doubleDimensionArr)
}
/*
验证值传递
*/
func verify(arr [3]int) {
arr[1] = 1
fmt.Println(arr)
}
/*
遍历数组
*/
func printArr(arr [3]int) {
//普通for循环
for n := 0;n<len(arr);n++{
fmt.Println(arr[n])
}
//使用range
for i,v := range arr{
fmt.Println(i,v)
}
//使用range+占位符
for _,v := range arr{
fmt.Println(v)
}
}
func main() {
declareArray()
var arr1 [3] int
printArr(arr1)
//下面的代码运行会报错,使用某些IDE会直接提示
//var arr2 [4] int
//printArr(arr2)
//调用verify后,arr1内容不变
verify(arr1)
fmt.Println(arr1)
//遍历数组
printArr(arr1)
}

go内建容器-数组的更多相关文章

  1. js的内建arguments数组

    调用函数时,只需在函数名后加一对用于传递参数的括号即可.var result = sum(1,2) 如果调用参数(a,b)的时候没有给值,则值默认为undefined.即使传递参数过多,多余的部分也会 ...

  2. C语言---数据结构(内建,数组,自定义)

    数组是一组有序数据的集合,每个元素都属于同一个数据类型. 一维数组的定义: 类型符  数组名[常量表达式] 常量表达式中,可以包括常量和符号常量,int a[3+5]是合法的.但是不能包含int a[ ...

  3. go内建容器-Map

    1.基础定义 golang中的map如同它的函数一样"纯粹",map就是用来存储键值对的容器,别管什么哈希不哈希的(底层已实现),用就行 //创建一个map m := map[st ...

  4. go内建容器-切片

    1.基础定义 看到'切片'二字,满脸懵逼.切的啥?用的什么刀法切?得到的切片有什么特点?可以对切片进行什么操作? 先看怎么得到切片,也就是前两个问题.切片的底层是数组,所以切片切的是数组:切的时候采用 ...

  5. go内建容器-字符和字符串操作

    1.基础定义 在基础语法篇提到过golang的rune相当于其他编程语言的char,其本质是一个int32(四字节),用[]rune来转换一个字符串时,得到的是个解码后的结果,存储在新开辟的[]run ...

  6. golang内建容器

  7. 跟着老猫来搞GO-内建容器Map

    前期回顾 在上面的文章中,老猫和大家分享了GO语言中比较重要的两种数据结构,一种是数组,另外一种是基于数组的slice.本篇文章想要继续和大家分享剩下的容器以及字符字符串的处理. MAP map的定义 ...

  8. JSP内建对象

    ① out - javax.servlet.jsp.jspWriter    out对象用于把结果输出到网页上. 方法: 1. void clear() ;    清除输出缓冲区的内容,可是不输出到c ...

  9. Python源码剖析——01内建对象

    <Python源码剖析>笔记 第一章:对象初识 对象是Python中的核心概念,面向对象中的"类"和"对象"在Python中的概念都为对象,具体分为 ...

随机推荐

  1. c# HttpWebRequest与HttpWebResponse

    [转]c# HttpWebRequest与HttpWebResponse 绝技 如果你想做一些,抓取,或者是自动获取的功能,那么就跟我一起来学习一下Http请求吧. 本文章会对Http请求时的Get和 ...

  2. 1100 final standings

    http://acm.timus.ru/problem.aspx?space=1&num=1100 link to the problem make a fast stable sorting ...

  3. MATLAB基础指令操作

    由于课程实验需要学习使用了MATLAB,在此记录一下MATLAB的基本操作和命令,供参考与查阅. 学习过程中的资料也链接如下: MATLAB矩阵运算:https://wenku.baidu.com/v ...

  4. 大素数测试的Miller-Rabin算法

    Miller-Rabin算法本质上是一种概率算法,存在误判的可能性,但是出错的概率非常小.出错的概率到底是多少,存在严格的理论推导. 一.费马小定理 假如p是质数,且gcd(a,p)=1,那么 a(p ...

  5. Adobe flash player 因过期而遭到阻止解决办法

    最近使用谷歌浏览器时总是提示Adobe flash player 因过期而遭到阻止,这让人很头痛,基本上就是打开一个网页就会弹出一个提示,下面是解决办法. 问题的截图界面: 解决方法:在chrome浏 ...

  6. 让Git不再难学

    写在前面 在团队做过软件开发的,版本控制必是不可或缺的一项.目前,版本控制主要分为集中式版本控制系统和分布式版本控制系统 ,即大家熟知的SVN和Git.Git是当下最流行的分布式版本控制系统,故,今天 ...

  7. Ajax跨域问题及解决方案

    目录 复现Ajax跨域问题 Ajax跨域介绍 Ajax跨域解决方案 一. 在服务端添加响应头Access-Control-Allow-Origin 二. 使用JSONP解决 小结 复现Ajax跨域问题 ...

  8. CVPR 2016 paper reading (2)

    1. Sketch me that shoe, Qian Yu, Feng Liu, Yi-Zhe Song, Tao Xiang, Timothy M. Hospedales, Cheng Chan ...

  9. sqlserver事务怎么开启 怎么提交 怎么回滚

    1.自动transaction每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值. 2.ExplicitTransac ...

  10. ssm分页

    pom.xml配置文件中增加相关的插件. <dependency> <groupId>com.github.pagehelper</groupId> <art ...