go 的容器
在介紹完變數的宣告與賦值之後要來介紹 go 語言之中的容器,相信有些程式基礎的讀者在認識完有哪些基礎型別後就會先看一下該語言有提供那些容器可供使用,所以接下來就要介紹 go 的容器array
、slice
、map
。
容器的類別
接下來要分別針對 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)
}
上面例子的a
與primes
就是array
,其使用的方法就是要[]
中間要有個大於零的整數,在賦值之後可以使用[start:end]
取得容器內從start
到end
的另外一個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
這個方法,透過map
的delete
可以刪除key
為我們指定的Apple的元素。
結論
這篇介紹 go 的容器的類別,並說明如何使用及宣告,希望對大家的程式撰寫有很大的幫助,接下來再說明方法相關內容之前要先說明 go 的邏輯判斷的寫法。