go内建容器-数组
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内建容器-数组的更多相关文章
- js的内建arguments数组
调用函数时,只需在函数名后加一对用于传递参数的括号即可.var result = sum(1,2) 如果调用参数(a,b)的时候没有给值,则值默认为undefined.即使传递参数过多,多余的部分也会 ...
- C语言---数据结构(内建,数组,自定义)
数组是一组有序数据的集合,每个元素都属于同一个数据类型. 一维数组的定义: 类型符 数组名[常量表达式] 常量表达式中,可以包括常量和符号常量,int a[3+5]是合法的.但是不能包含int a[ ...
- go内建容器-Map
1.基础定义 golang中的map如同它的函数一样"纯粹",map就是用来存储键值对的容器,别管什么哈希不哈希的(底层已实现),用就行 //创建一个map m := map[st ...
- go内建容器-切片
1.基础定义 看到'切片'二字,满脸懵逼.切的啥?用的什么刀法切?得到的切片有什么特点?可以对切片进行什么操作? 先看怎么得到切片,也就是前两个问题.切片的底层是数组,所以切片切的是数组:切的时候采用 ...
- go内建容器-字符和字符串操作
1.基础定义 在基础语法篇提到过golang的rune相当于其他编程语言的char,其本质是一个int32(四字节),用[]rune来转换一个字符串时,得到的是个解码后的结果,存储在新开辟的[]run ...
- golang内建容器
- 跟着老猫来搞GO-内建容器Map
前期回顾 在上面的文章中,老猫和大家分享了GO语言中比较重要的两种数据结构,一种是数组,另外一种是基于数组的slice.本篇文章想要继续和大家分享剩下的容器以及字符字符串的处理. MAP map的定义 ...
- JSP内建对象
① out - javax.servlet.jsp.jspWriter out对象用于把结果输出到网页上. 方法: 1. void clear() ; 清除输出缓冲区的内容,可是不输出到c ...
- Python源码剖析——01内建对象
<Python源码剖析>笔记 第一章:对象初识 对象是Python中的核心概念,面向对象中的"类"和"对象"在Python中的概念都为对象,具体分为 ...
随机推荐
- pyqt5加载网页的简单使用
如下初步使用了pyqt5,构造了一个webview来加载网址,呈现网页. 1.安装pyqt5包,可使用douban的源 pip install pyqt5 -i http://pypi.douban. ...
- HashMap 和 ConcurrentHashMap,Java1.8版本
1. HashMap Entry,一对kv就是一个Entry,还包括一些next指针,用来解决散列冲突. table,内部用来存储Entry的数组,resize时候table会成倍扩容. 容量,tab ...
- C#学习——入门简介
# C#简介 #原版出处点击这里 C#是一个现代的.通用的.面向对象的编程语言,它是由微软(Microsoft)开发的,由Ecma和ISO核准认可的. C#是由Anders Heilsberg和他的团 ...
- hdu 6208 The Dominator of Strings【AC自动机】
hdu 6208 The Dominator of Strings[AC自动机] 求一个串包含其他所有串,找出最长串去匹配即可,但是匹配时要对走过的结点标记,不然T死QAQ,,扎心了.. #inclu ...
- Hibernate双向一对多、双向多对多关联关系中的映射文件怎么写
这里以一对多关联关系为例.以Country类为一端,Competition类为多端. 一个国家可以有多个赛事,但是一个赛事只能属于一个国家. Country类 public class Country ...
- 同步Internet时间
问题: 开启了 自动设置时间,时区 但问题仍然存在 回答: 勾选并不代表真正同步成功 执行timedate.cpl如图设置 记得点击立即更新 时间不同步可能是时间服务器问题 换一个就可以了
- 【转】Spring Boot Profile使用
http://blog.csdn.net/he90227/article/details/52981747 摘要: spring Boot使用@Profile注解可以实现不同环境下配置参数的切换,任何 ...
- Java基础随笔3
一. 键盘录入数据概述 我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,把数据改进为键盘录入,提高程序的灵活性. 键盘录入数据的步骤: A:导包(位置放到class ...
- winform 实现定位
如何在winform中 导入地图实现定位功能 ? 从网上下个BaiDuMap.htm, 就是个js文件 在form中加入webBrowser控件,然后在窗体的加载事件中写入如下代码 webBro ...
- 如何搭建私人的ghost博客
可参考 http://blog.pandax.me/cjbk/ 此文