Go(day3[數組])
阿新 • • 發佈:2017-12-12
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[數組])