标签: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