Golang學習筆記-1.11 數(shù)組

本文系第十一篇Golang語言學習教程

數(shù)組

數(shù)組是同一類型元素的集合。一個數(shù)組可以由0個或多個元素組成。
定義數(shù)組的格式:

var <varName> [n]type , n >0

n表示數(shù)組中元素的數(shù)量凡泣,type代表每個元素的類型蝶押;元素數(shù)量n同時作為數(shù)組類型的長度,例:

var a [2]int  //數(shù)組 a 是長度為 2 的 int 型數(shù)組
var b [2]int  //數(shù)組 b 是長度為 1 的 int 型類型庇绽,與數(shù)組 a 是完全不同的類型 

且Go語言中不允許混合不同類型的元素抹恳,例如包含字符串和整數(shù)的數(shù)組。

package main

import "fmt"

func main(){
    var a [2]int   // //定義一個長度為 2 的整數(shù)數(shù)組
    fmt.Println(a)
}

數(shù)組中所有元素都被自動賦值為數(shù)組類型的零值署驻,a是一個整數(shù)數(shù)組奋献,所以a的所有元素都被賦值為int型的零值:0。以上程序的運行結果為[0 0]

數(shù)組的索引從0開始旺上,到length -1 結束瓶蚂,讓我們給上面的數(shù)組賦值:

package main

import "fmt"

func main(){
    var a [2]int  //定義一個長度為 2 的整數(shù)數(shù)組
    a[0] = 45
    a[1] = 25
    fmt.Println(a)
}

a[0]將值賦給 a 數(shù)組的第一個元素。以上程序的運行結果為:[45 25]

簡略聲明

package main

import "fmt"

func main(){
    /*簡略聲明*/
    b := [3]int{15, 35, 55}
    fmt.Println(b)
}

上面的程序運行結果為:[15 35 55]

在簡略聲明中宣吱,不需要將數(shù)組中的所有元素賦值

package main

import "fmt"

func main(){
    c := [4]int{12}
    fmt.Println(c)
}

在上面程序中窃这,c := [4]int{12}聲明一個長度為4的數(shù)組,但只提供了一個12的值征候,剩下的三個元素自動賦值為0杭攻。
上面的程序運行結果為:[12 0 0 0]

甚至可以忽略聲明數(shù)組的長度,用[...]來代替疤坝,編譯器將自動計算長度:

package main

import "fmt"

func main(){
    d := [...]int{1, 3, 5, 7}
    fmt.Println(d)
}

數(shù)組的類型

數(shù)組是值類型而不是引用類型兆解,當數(shù)組賦值給一個新變量后,該變量會得到一個數(shù)組的副本跑揉,如果對新變量進行更改锅睛,不會影響原始數(shù)組。

package main

import "fmt"

func main(){
    e := [...]string{"BTC", "ETH", "EOS"}
    f := e  
    f[0] = "QTUM"  //更改數(shù)組 f 的第一個元素
    fmt.Println("e is ", e)  //對 數(shù)組 f 值修改不會影響到原始數(shù)組
    fmt.Println("f is ", f)  
}

上面程序中历谍,將e賦值給了f现拒,對f的第一個元素修改,不會影響到原始數(shù)組望侈。
上面的程序運行結果為:

e is [BTC ETH EOS]
f is [QTUM ETH EOS]

同樣印蔬,當數(shù)組作為參數(shù)傳遞給函數(shù)時,他們是按值傳遞的甜无,原始數(shù)組不做改變:

package main

import "fmt"

func changeLocal(num [5]int) {  //定義函數(shù) changeLocal 扛点,輸入值 num 是一個長度為 5 的整數(shù)數(shù)組
    num[0] = 55  //在函數(shù)中將輸入值得第一個元素改為 55
    fmt.Println("inside function ", num)  
}
func main() {
    num := [...]int{5, 6, 7, 8, 8}   //定義數(shù)組num值為{5, 6, 7, 8, 8} 
    fmt.Println("before passing to function ", num)   //正常輸出數(shù)組
    changeLocal(num) //調(diào)用函數(shù)輸出數(shù)組哥遮,在期間改變了第一個元素為 55
    fmt.Println("after passing to function ", num)  //繼續(xù)正常輸出數(shù)組
}

在以上程序中,13行出num實際上是通過值傳遞給函數(shù)changeLocal陵究,原始數(shù)組不會因為函數(shù)調(diào)用而改變眠饮。
上面的程序運行結果為:

before passing to function [5 6 7 8 8]
inside function [55 6 7 8 8]
after passing to function [5 6 7 8 8]

數(shù)組的長度

通過將數(shù)組傳遞給len函數(shù),可以得到數(shù)組的長度:

package main

import "fmt"

func main(){
    /*數(shù)組的長度*/
    g := [...]float64{55.3, 34, 0.92, 99.99, 88.8}
    fmt.Println("the length of g is ", len(g))  //通過len函數(shù)得到數(shù)組 g 的長度
}

上面的程序運行結果為:the length of g is 5

使用range迭代數(shù)組

package main

import "fmt"

func main(){
    /*使用range迭代數(shù)組*/
    h :=[...]float64{55.3, 34, 0.92, 99.99, 88.8}   //定義數(shù)組 h
    sum := float64(0)  //定義變量 sum
    for i, v := range h{   //range返回兩個值:索引和該索引處的值铜邮,第一次循環(huán)返回 0 和 55.3 仪召,分別賦值給 i 和 v
        fmt.Printf("\nthe %d value is %.2f", i, v)
        sum += v   //將 v 的值加起來
    }

    fmt.Println("\nsum of all values is", sum)
}

上述程序的for i, v := range h利用的是 for 循環(huán) range 方式。 它將返回索引和該索引處的值松蒜。 我們打印這些值扔茅,并計算數(shù)組 h 中所有元素的總和。
上面的程序運行結果為:

the 0 value is 55.30
the 1 value is 34.00
the 2 value is 0.92
the 3 value is 99.99
the 4 value is 88.80
sum of all values is 279.01

如果只需要值而不需要索引秸苗,可以使用_空白標識符替換索引:

for _, v := range h { // 忽略range的索引
}

上面的 for 循環(huán)忽略索引召娜,同樣值也可以被忽略。

以上為學習Golang 數(shù)組篇惊楼,下一篇學習切片的應用

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玖瘸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子檀咙,更是在濱河造成了極大的恐慌雅倒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弧可,死亡現(xiàn)場離奇詭異蔑匣,居然都是意外死亡,警方通過查閱死者的電腦和手機棕诵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門裁良,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人年鸳,你說我怎么就攤上這事趴久。” “怎么了搔确?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵彼棍,是天一觀的道長。 經(jīng)常有香客問我膳算,道長座硕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任涕蜂,我火速辦了婚禮华匾,結果婚禮上,老公的妹妹穿的比我還像新娘机隙。我一直安慰自己蜘拉,他們只是感情好萨西,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旭旭,像睡著了一般谎脯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上持寄,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天源梭,我揣著相機與錄音,去河邊找鬼稍味。 笑死废麻,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的模庐。 我是一名探鬼主播烛愧,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掂碱!你這毒婦竟也來了屑彻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤顶吮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粪薛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悴了,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年违寿,在試婚紗的時候發(fā)現(xiàn)自己被綠了湃交。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡藤巢,死狀恐怖搞莺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掂咒,我是刑警寧澤才沧,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站绍刮,受9級特大地震影響温圆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孩革,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一岁歉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膝蜈,春花似錦锅移、人聲如沸熔掺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽置逻。三九已至,卻和暖如春努潘,著一層夾襖步出監(jiān)牢的瞬間遥缕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工尊勿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留靶剑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓压怠,卻偏偏與公主長得像眠冈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子菌瘫,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔蜗顽,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,756評論 2 9
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,797評論 0 38
  • 今天是南京藝術學院520嘉年華雨让,夜晚的校園簡直是用炫酷已經(jīng)無法形容了雇盖,而且人員爆滿。 此時在晚上逛校園栖忠,簡直是進入...
    樸領閱讀 187評論 0 3
  • 夢醒三更披衣起崔挖, 辰星閃爍滿天際。 安得慧筆書春意庵寞, 好雨隨風潤物及狸相。 祝夢辰安平喜樂 早日康復
    蕭路遙閱讀 157評論 8 7
  • 滿天飛絮夢三月,如今卻是三九時捐川。被寢如紙人亦冷脓鹃,歲寒不等陽春季。踏雪尋梅無覓處古沥,暮靄沉沉堪斷腸瘸右。人生蹉跎奈何天,哪...
    一葦之杭閱讀 221評論 0 0