8.Golang數(shù)組array交胚、切片slice份汗、字典map 數(shù)據(jù)操作

一、數(shù)組 array
聲明數(shù)組時蝴簇,必須聲明數(shù)組大小杯活,聲明后大小不可變,未賦值的空間默認值為數(shù)組存儲類型的 0 值熬词。

  1. 數(shù)組是值類型數(shù)據(jù)旁钧,相同空間大小的數(shù)組可以用 == 來比較是否相同。
package main

import "fmt"

func main() {
    var a1 = [2]int{1, 2}
    var a2 = [2]int{1, 2}
    fmt.Println(a1 == a2) // 輸出:true
}

2.數(shù)組遍歷

package main

import "fmt"

func main() {
    // range 推薦
    arr := [3]string{"aa", "bb", "cc"}
    for index, v := range arr {
        fmt.Printf("index:%d, value:%s\n", index, v)
    }

    // for
    for i := 0; i < len(arr); i++ {
        v := arr[i]
        fmt.Printf("index:%d, value:%s\n", i, v)
    }

}

3.數(shù)組追加元素
數(shù)組大小固定互拾,所以只能指定元素操作歪今。

package main

import (
    "fmt"
)

func main() {
    var arr = [5]int{1, 2}
    arr[2] = 3
    arr[3] = 4
    fmt.Println(arr) // 輸出:[1 4 3 4 0]
}

4.數(shù)組指針

package main

import (
    "fmt"
)

func main() {
    // 數(shù)組指針之間的賦值不會拷貝底層數(shù)組的值
    var a1 = &[3]int{1, 2, 3} // 取數(shù)組地址
    var a2 *[3]int            // 定義一個數(shù)組指針
    a2 = a1                   // 使 a2 指向 a1 地址
    a1[2] = 9
    fmt.Println(*a1) // 輸出:[1 2 9]
    fmt.Println(*a2) // 輸出:[1 2 9]
}

二、切片 slice
切片可以看作是一個可變長的數(shù)組摩幔,是一個引用類型彤委。它包含三個數(shù)據(jù):1.指向數(shù)組的指針,2.切片中的元素或衡,3.切片的大小焦影。

1.切片遍歷

package main

import "fmt"

func main() {
    sl := []int{1, 2, 3}

    // range
    for i, v := range sl {
        fmt.Printf("index:%d, value:%d\n", i, v)
    }

    for i := 0; i < len(sl); i++ {
        v := sl[i]
        fmt.Printf("index:%d, value:%d\n", i, v)
    }
}

2.插入、刪除元素
只要內(nèi)存足夠封断,切片可以追加任意個元素斯辰。

package main

import "fmt"

func main() {
    // 切片末尾追加元素
    sl := make([]int, 0)
    sl = append(sl, 1)
    sl = append(sl, 2, 3)
    fmt.Println(sl) // 輸出:[1 2 3]

    // 在索引位置 i 插入元素 x:s = append(s[:i], append([]T{x}, s[i:]...)...)
    // 在索引位置 1 插入元素 4:
    sl = append(sl[:1], append([]int{4}, sl[1:]...)...)
    fmt.Println(sl) // 輸出:[1 4 2 3]

    // 在索引位置 i 插入長度為 j 的切片:s = append(s[:i], append(make([]T, j), s[i:]...)...)
    // 在索引位置 2 插入長度為 3 的切片:
    var sl1 = []int{11, 22, 33}
    sl = append(sl[:2], append(sl1, sl[2:]...)...)
    fmt.Println(sl) // 輸出:[1 4 11 22 33 2 3]

    // 刪除索引位置 i 上元素:s = append(s[:i], s[i+1:]...)
    // 刪除索引位置 1 上的元素:
    sl = append(sl[:1], sl[1+1:]...)
    fmt.Println(sl) // 輸出:[1 11 22 33 2 3]

    // 刪除索引位置 i 到 j 上的元素,殺出元素不包括索引 j 上的元素:s = append(s[:i],s[j:]...)
    // 刪除索引位置 2 到 4 上的元素:
    sl = append(sl[:2], sl[4:]...)
    fmt.Println(sl) // 輸出:[1 11 2 3]

    // 復(fù)制切片坡疼,將 a 切片上的元素拷貝到 b 切片上:copy(b, a)
    // 如果切片長度不等彬呻,a 長度大于 b 則拷貝len(b) 長度個 a 切片中的元素給 b
    // 如果 a 長度小于 b 則拷貝 a 中元素到 b 中,b 中超出的元素部分保持原值不變
    var a, b []int
    a = []int{1, 2, 3, 4}
    b = []int{11, 22}
    copy(b, a)
    fmt.Println(b) // 輸出:[1,2]

    c := make([]int, 5)
    c = []int{11, 22, 33, 44, 55}
    copy(c, a)
    fmt.Println(c) // 輸出:[1 2 3 4 55]
}

3.排序
Go 語言 sort 包提供了 sort.Ints() 柄瑰、sort.Float64s() 和 sort.Strings() 函數(shù)闸氮,都是從小到大排序:

package main

import (
    "fmt"
    "sort"
)

func main() {
    intList := []int{5, 3, 2, 1, 4}
    float64List := []float64{5.1, 1.2, 2.34, 4.22, 3.12}
    stringList := []string{`a`, `e`, `d`, `c`, `b`}

    // 正序,從小到大排序
    sort.Ints(intList)
    sort.Float64s(float64List)
    sort.Strings(stringList)
    fmt.Println(intList)     // 輸出:[1 2 3 4 5]
    fmt.Println(float64List) // 輸出:[1.2 2.34 3.12 4.22 5.1]
    fmt.Println(stringList)  // 輸出:[a b c d e]

    // 倒敘教沾,從大到小排序
    sort.Sort(sort.Reverse(sort.IntSlice(intList)))
    sort.Sort(sort.Reverse(sort.Float64Slice(float64List)))
    sort.Sort(sort.Reverse(sort.StringSlice(stringList)))
    fmt.Println(intList)     // 輸出:[5 4 3 2 1]
    fmt.Println(float64List) // 輸出:[5.1 4.22 3.12 2.34 1.2]
    fmt.Println(stringList)  // 輸出:[e d c b a]
}

三蒲跨、字典 map
字典操作:

package main

import "fmt"

func main() {
    m := make(map[string]int, 2)

    // 插入元素
    m["a"] = 11
    m["b"] = 22

    // 遍歷 map
    for index, v := range m {
        fmt.Printf("index:%s v%d:\n", index, v)
    }

    // 刪除 map 中數(shù)據(jù)
    delete(m, "a")
    fmt.Println(m) // 輸出:map[b:22]
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市授翻,隨后出現(xiàn)的幾起案子或悲,更是在濱河造成了極大的恐慌,老刑警劉巖堪唐,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巡语,死亡現(xiàn)場離奇詭異,居然都是意外死亡淮菠,警方通過查閱死者的電腦和手機男公,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來合陵,“玉大人理澎,你說我怎么就攤上這事逞力。” “怎么了糠爬?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵寇荧,是天一觀的道長。 經(jīng)常有香客問我执隧,道長揩抡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任镀琉,我火速辦了婚禮峦嗤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屋摔。我一直安慰自己烁设,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布钓试。 她就那樣靜靜地躺著装黑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弓熏。 梳的紋絲不亂的頭發(fā)上恋谭,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音挽鞠,去河邊找鬼疚颊。 笑死,一個胖子當著我的面吹牛信认,可吹牛的內(nèi)容都是我干的材义。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嫁赏,長吁一口氣:“原來是場噩夢啊……” “哼母截!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起橄教,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喘漏,沒想到半個月后护蝶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡翩迈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年持灰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片负饲。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡堤魁,死狀恐怖喂链,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妥泉,我是刑警寧澤椭微,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站盲链,受9級特大地震影響蝇率,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刽沾,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一本慕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侧漓,春花似錦锅尘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至何鸡,卻和暖如春纺弊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骡男。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工淆游, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隔盛。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓犹菱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吮炕。 傳聞我的和親對象是個殘疾皇子腊脱,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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

  • 數(shù)組Go語言中的數(shù)組是定長的同一類型數(shù)據(jù)的集合,數(shù)組索引是從0開始的龙亲。數(shù)組有以下幾種創(chuàng)建方式 以下是一些特殊數(shù)組 ...
    小杰的快樂時光閱讀 1,688評論 0 0
  • 轉(zhuǎn)載自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay閱讀 6,148評論 1 5
  • 背景:目前iOS 項目警告達到了400多個陕凹,夾雜著第三方的, 自己項目代碼的混在一起鳄炉,根本無法及時關(guān)注到是否是由于...
    好好姐閱讀 1,432評論 0 1
  • 那天杜耙,我從青春的門進去 看見, 愛和戀結(jié)著伴 痛和快樂相互攙扶 輕狂和不知天高喝著酒 憤怒和抗拒怒目而對 痛苦和憂...
    秋燭滴蓮閱讀 128評論 0 0
  • 記憶的深處仍有一片漣漪拂盯。 素色的薄衣沁潤著汗水緊緊帖服在那人兒的纖背佑女, 我穿越時空癡癡地凝望與那一刻的我重疊, 竟...
    放流娃閱讀 240評論 0 0