Iris 這個在 go 語言上地表最快的網頁框架-容器的類別

go 的容器

在介紹完變數的宣告與賦值之後要來介紹 go 語言之中的容器,相信有些程式基礎的讀者在認識完有哪些基礎型別後就會先看一下該語言有提供那些容器可供使用,所以接下來就要介紹 go 的容器arrayslicemap

容器的類別

接下來要分別針對 go 的容器類型加以說明,首先先說明大家比較熟悉的 array

array

這個翻譯叫陣列的容器是最常用的容器,但是這個容器在宣告時就要指定大小,所以使用的方法如下

package main

import "fmt"

func main() {
    var a [2]string
    a[0] = "Hello"
    a[1] = "World"
    fmt.Println(a[0], a[1])
    fmt.Println(a)

    primes := [6]int{2, 3, 5, 7, 11, 13}
    fmt.Println(primes)
}

上面例子的aprimes就是array,其使用的方法就是要[]中間要有個大於零的整數,在賦值之後可以使用[start:end]取得容器內從startend的另外一個array的記憶體位置。儘管array的大小是固定的但是 go 有提供方法可以來轉換成下一種容器。

slice

介紹完上一個容器後接著介紹比較常用的容器slice期差別就如同剛剛講的array大小固定、slice

可以擴充大小,接下來先看看用法

package main

import "fmt"

func main() {
    primes := [6]int{2, 3, 5, 7, 11, 13}

    var s []int = primes[1:4]
    fmt.Println(s)
}

上面例子中的s就是slice,其使用的方法就是要[]中間不需要帶數字,在 go 裡面關於slice的初始化的方式如下

package main

import "fmt"

func main() {
    s := make([]int, 5) // make an int slice of length 5
    fmt.Println(s) // [0 0 0 0 0]
        s2 := []int{0,0,0,0,0}
    fmt.Println(s2) // [0 0 0 0 0]
}

上面的make是產生一個大小為5的slice,而另外一種是直接給定5個0的slice然而光這樣說明對於使用者的使用上來說還太簡陋,接下來要說明如何擴展容器

package main

import "fmt"

func main() {
    a := []int{1,2,3}
    b := []int{4,5,6}
    c := append(a,b...)
    fmt.Println(c)
    d := append(a, 1)
    fmt.Println(d)
}

上面的例子簡單來說就是將a,b都放到c裡面。說完了如何擴充之後接下來就要說明如何刪除slice內的元素

package main

import "fmt"

func main() {
    s := []int{1, 2, 3, 4, 5, 6, 7, 8}
    s = append(s[:3], s[4:]...)    // remove 3rd elem
    fmt.Println(s)
}

上面的例子就是展示如何刪除位於第三個位置的元素。最後在介紹如何更新容器內的元素。

package main

import "fmt"

func main() {
    s := []int{1, 2, 3, 4, 5, 6, 7, 8}
    s[3] = 10    // [1 2 3 10 5 6 7 8]
    fmt.Println(s)
}

上面的例子就是將第三個位置的元素換成10。slice到這裡告一段落,接下來要開始說明另外一種容器map

map

所謂的map就是以key來當索引儲存value的一種容器接下來看看下列宣告的方式

package main

import "fmt"

func main() {
    m := map[string]int{
        "Bell Labs": 1,
        "Google": 2,
    }
    fmt.Println(m)
}

上面例子就是宣告一個key為字串型態而儲存的value為整數的容器,例子中直接賦值給該容器,如果要新增或更改值的話就如下列所示

package main

import "fmt"

func main() {
    m := map[string]int{
        "Bell Labs": 1,
        "Google": 2,
    }
    m["Apple"] = 3
    m["Google"] = 4
    fmt.Println(m)
}

上面例子多加一個key為Applevalue為3的資料到容器中,並修改Google的value,在介紹完更新與新增後要說明如何刪除容器中的某個key的元素

package main

import "fmt"

func main() {
    m := map[string]int{
        "Bell Labs": 1,
        "Google": 2,
    }
    m["Apple"] = 3
    m["Google"] = 4
    fmt.Println(m)
    delete(m, "Apple")
    fmt.Println(m)
}

這裡使用delete這個方法,透過mapdelete可以刪除key為我們指定的Apple的元素。

結論

這篇介紹 go 的容器的類別,並說明如何使用及宣告,希望對大家的程式撰寫有很大的幫助,接下來再說明方法相關內容之前要先說明 go 的邏輯判斷的寫法。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *