數組:var 變量名[len]type數組
使用場景:ide
固定需求的時候,使用數組,不可超出指定長度編碼
長度也是數組類型的一部分spa
底層內存空間是連續的索引
用來存儲常量內存
數組是一種特殊的字典.....utf-8
數組寫入,賦值的方式, 數組[索引]=值ci
數組是值類型,若是copy成另一個數組,那修改這個數組,原來的數組並不會改變
字符串
數組初始化:string
定義: 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]) } }