go語言學習(十、數組、切片、字典)

數組是具有相同唯一類型的一組已編號且長度固定的數據項序列,這種類型可以是任意的原始類型例如整形、字符串或者自定義類型

package main

import (
	"fmt"
	"reflect"
)

func main() {
	/*
		數組聲明
	*/
	// 數組聲明格式 TypeOf輸出變量類型
	// 結果輸出:[10]int
	var tArray [10] int
	fmt.Println(reflect.TypeOf(tArray))
	// 不指定數組元素長度 讓編譯器自己識別
	// 結果輸出:[3]int
	var tArray2 = [...]int{1, 2, 3}
	fmt.Println(reflect.TypeOf(tArray2))

	/*
		數組訪問
	*/
	// 根據下標讀取元素 初始下標爲0 也就是偏移量 偏移量爲0 所以讀的是第一個元素
	// tArray只聲明 沒賦值 根據默認賦值規則 輸出:0
	fmt.Println(tArray[0])
	// 輸出tArray2第一個元素 1
	fmt.Println(tArray2[0])
	// 訪問不存在的元素 編譯錯誤 數組越界
	//fmt.Println(tArray2[3])

	/*
		多維數組
	*/
	// go語言支持多維數組 以二維數組爲例
	// 聲明
	var tArray3 [2][2] int
	// 初始化 輸出:[[1 2] [3 4]]
	tArray3 = [2][2] int{{1, 2}, {3, 4}}
	fmt.Println(tArray3)
	// 根據下標訪問 輸出:1
	fmt.Println(tArray3[0][0])
}

切片是對數組的抽象 Go 數組的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內置類型切片(動態數組)

package main

import (
	"fmt"
	"reflect"
)

func main() {
	// 切片聲明 未指定大小的數組就是切片 未賦值的切片值爲nil
	var tSlice []int
	// 輸出[]int
	fmt.Println(reflect.TypeOf(tSlice))
	// 使用make函數來創建切片
	var tSlice1 []int = make([]int, 10)
	// 輸出[]int
	fmt.Println(reflect.TypeOf(tSlice1))
	// 簡寫 直接賦值
	tSlice2 := make([]int, 10)
	tSlice3 := []int{1, 2, 3}
	// 輸出[]int
	fmt.Println(reflect.TypeOf(tSlice2))
	// 輸出[]int
	fmt.Println(reflect.TypeOf(tSlice3))
	// 直接從數組中創建切片 s := arr[startIndex:endIndex]
	// 根據下標切割數組 左下標默認爲起始 右下標默認爲最後一個
	tArray := [5]int{1, 2, 3, 4, 5}
	tSlice4 := tArray[0:2]
	tSlice5 := tArray[0:]
	// 輸出:[1,2]
	fmt.Println(tSlice4)
	// 輸出:[1,2,3,4,5]
	fmt.Println(tSlice5)
	// 切片追加元素 輸出:[1 2 3 4 5 1 2]
	fmt.Println(append(tSlice5, 1, 2))

}

Map 是一種無序的鍵值對的集合 通過 key 來快速檢索數據,key 類似於索引,指向數據的值

package main

import (
	"fmt"
	"reflect"
)

func main() {
	// 聲明變量,默認 map 是 nil
	var tMap map[string]string
	// 輸出map[string]string
	fmt.Println(reflect.TypeOf(tMap))

	// 使用make函數創建map
	tMap2 := make(map[string]string)
	// 輸出map[string]string
	fmt.Println(reflect.TypeOf(tMap2))

	// 遍歷map
	// 輸出 犀利的大熊 神奇的二熊
	tMap2["犀利的"] = "大熊"
	tMap2["神奇的"] = "二熊"
	for key, value := range tMap2 {
		fmt.Println(key, value)
	}

	// 刪除map內某個元素 delete
	// 輸出:map[神奇的:二熊]
	delete(tMap2, "犀利的")
	fmt.Println(tMap2)
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章