标签:go(day3[数组])
数组:var 变量名[len]type使用场景:
固定需求的时候,使用数组,不可超出指定长度
长度也是数组类型的一部分
底层内存空间是连续的
用来存储常量
数组是一种特殊的字典.....
数组写入,赋值的方式, 数组[索引]=值
数组是值类型,如果copy成另外一个数组,那修改这个数组,原来的数组并不会改变
数组初始化:
????定义:????var 变量名 [len]type
第一种:?
var?a[5]?int?=?[5]int{1,2,3,4,5}
第二种:
ceshi?:=[5]int{1,3,4,5}
第三种
var?b?=?[5]int{1,3}
第四种(当不可知长度的时候使用 ...),需要注意的是在切片中也有这种用法,不过含义不一样
var?c?=?[...]int{1,3,4,5,10}
?
示例:
var?a[5]int var?a[5]string var?a[5]float32 var?a[5]bool
访问数组中的元素:
? 使用下标访问:?a[0]访问第一个元素。长度为5的数组访问如下: a[0], a[1], a[2], a[3], a[4]
数组中的长度:
????var a[10]int
????lengh :=len(a)
示例代码拆分部分:
数组循环:
格式化%p,用来打印内存地址
& 符号,取变量地址
尽量用变量来循环
var?a?[10]int for?i?:=0;i<len(a);i++{ ???fmt.Printf("%p\n",&a[i]) }
length:=len(a)?数组长度
数组初始化:
定义数组的时候,默认值都是0
产生另外一个数组,修改这个数组,并不会对原数组进行修改
func?test2()??{ ???var?a[5]int??=?[5]int?{1,2,3,4,5} ???var?b[5]?int ???b?=?a ???fmt.Printf("%v\n",b) ???b[0]?=?200 ???fmt.Printf("%v\n",b) ???fmt.Printf("%v\n",a) }
数组定义:
声明数组的时候,需要定义长度和类型!!!
写法:变量[长度]类型 = [长度]类型[值]
数组赋值:指定下标来指定元素赋值
%#以go的方式打印
var?d?[5]string?=?[5]string{1:"abc",4:"zcq"} //%#??以go的方式打印!!! fmt.Printf("%#%v\n",d) fmt.Printf("%v\n",a,b,c)
二维数组
var a[8][2]int
func?test4()??{ ???//二维数组 ???var?a[4][2]int ???for?i:=0;i<4;i++{ ??????for?j:=0;i<2;j++{ ?????????a[i][i]?=?(i+1)?*(j+1) ??????} ???} ???for?i:=0;i<4;i++{ ??????for?j:=0;i<2;j++{ ?????????fmt.Printf("%d",a[i][j]) ??????} ??????fmt.Println() ???} }
数组赋值:随机数字放入数组
切记:go是强类型语言,所以类型如果不一样,是编译不过去的
使用随机数模块,使用time模块
r?:=?rand.New(rand.NewSource(time.Now().Unix())
func?test5()??{ ???//随机数字放入数组 ???r?:=?rand.New(rand.NewSource(time.Now().Unix())) ???var?five?[100]int ???//数组?通过索引来赋值 ???for?i:=0;i<len(five);i++{ ??????//赋值操作 ??????five[i]=r.Int() ??????//取值操作 ??????fmt.Printf("%d\n",five[i]) ???} ???fmt.Printf("%d\n",five) }
数组赋值:随机字符串放入数组
go里面是utf-8编码
Sprintf 格式化并返回格式化后的字符串,可直接赋值!!!
func?test6()??{ ??? ???var?a?[100]string ???var?b?string?=?"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ???for?i:=0;i<len(a);i++{ ??????var?str?string ??????for?j:=0;j<len(b);j++{ ?????????index?:=rand.Intn(len(b)) ?????????//Sprintf?格式化并返回格式化后的字符串 ?????????str?=?fmt.Sprintf("%s%c",str,b[index]) ??????} ??????a[i]?=?str ??????fmt.Printf("a[%d]=%s\n",i,a[i]) ???} }
标签:go(day3[数组])
原文地址:http://blog.51cto.com/12765315/2049576