iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
自我挑戰組

30 天學 Golang?Go 啦哪次不 Go系列 第 7

Day7# Array & Slice(上)

嗨,連假後的第一天上班大家還好嗎...(›´ω`‹ )...
在 Day3 有提到會在更仔細的介紹 Slice,今天就準備來進行任務。
如果都準備妥妥的,那我們就開始吧 ─=≡Σ(((っ゚∀゚)っ

事前回顧

要講到 slice 就需要先提到 array。

Array

array 是一個集結相同資料類型的結合體,如果有學過程式語言的人,相信對 array 一定不陌生,但是在 Go 的 array 有一點點不一樣。

在 Go 內的 array 一但被建立,就無法改變長度及裡面的資料屬性。

package main

import "fmt"

func main() {
	pet := [3]string{"Dog", "Cat", "Bird"}
	fmt.Println(pet)
}
// => [Dog, Cat, Bird]

如果我想闖關偷加一個資料進去 pet array 就會得到錯誤訊息 array index 3 out of bounds [0:3]

如果有時候不確定 array 到底有幾個值,也可以使用下面的方式

[…]int{1, 2, 3, 4} // 在編譯時他會自動去計算 {} 內有幾個元素

這時候就會思考,這麼不彈性的 array 該怎麼用!
但其實不用擔心,這個 array 並不是我們常見的其他程式語言內的 array,真正比較像 array 的 array 應該是 slice(登愣)!

Slice

slice 可以任意增加陣列內的元素及長度,與 array 同樣以 [] 定義,但不同的是不用在 [] 內寫上數量。

如何定義 slice:

cats := []string{"BuiBui", "MeiMei"}

也能夠透過 make 方法長出一個 slice

// func make([]T, len, cap) []T
func make([]string, len, cap) 

至於 lencap 又是在做什麼?
請容許我搬到下一篇再來繼續解釋 (›´ω`‹ )...

結尾

時間沒抓好,但又不想草草了事,就讓我任性的放任這篇分成上下集吧!
有任何問題歡迎與我告知 :)


上一篇
Day6# 流程控制
下一篇
Day8# Array & Slice(下)
系列文
30 天學 Golang?Go 啦哪次不 Go20

尚未有邦友留言

立即登入留言