Golang基礎學習(十一)map

map

  • map是key-value數據結構,又稱爲字段或者關聯數組。

  • 基本語法

    • var 變量名 map[keytype]valuetype

    • key可以是bool,數組,string,指針,channel,還可以是 接口,結構體,數組。通常爲int,string

    • slice、map還有function不可以,因爲這幾個沒法用==來判斷。

    • value的類型和key基本一樣,通常爲數字(整數、浮點數),string,map,struct

    • var a map[string]string

    • var a map[int]string

    • var a map[stirng]int

    • var a map[string]map[string]string

  • map使用前需要make, make(Type, size IntegerType)

  • map的key不能重複,重複之後的會覆蓋前面的

  • map的value可以相同

  • map的key-value無序

  • map的使用方式


package main

import (
	"fmt"
)

func main()  {
	//map使用的第一種方式:先聲明,再make
	var map1 map[int]string
	map1 = make(map[int]string, 5)
	map1[1] = "a"
	map1[2] = "b"
	map1[3] = "c"
	fmt.Println("map1=", map1)

	// 第二種方式:聲明時就make
	map2 := make(map[int]string)
	map2[1] = "A"
	map2[2] = "B"
	fmt.Println("map2=", map2)

	// 第三種方式:聲明時賦值
	map3 := map[int]string{
		1 : "C",
		2 : "D",
	}
	fmt.Println("map3=", map3)
}

  • map的刪除

    • delete(map, “key”)
    • map的值需要單個刪除
    • 刪除所有key,直接make一個新的空間
  • map的查找

    • value,boolean = map1[1]
  • map的遍歷使用:for-range


for k, v := range map {
	fmt.Printf("key = %v, value = %v", k, v)
} 

  • map的長度

    • len(map):拿到的是多少對key-value
  • map切片

    • 切片的數據類型是map,成爲map切片,map個數就可以動態變化
    • var mapSlice []map[string]string
    • mapSlice = make([]map[string]string, 2)
    • mapSlice[0] = make(map[string]string, 2)
    • mapSlice[0][“name”] = “001”
    • mapSlice[0][“age”] = “20”
    • mapSlice = append(mapSlice, newMap)
  • map的排序

    • golang中的map是無序的
    • map排序思路
      • 先將map的key放到 切片中
      • 對切片排序
      • 遍歷切片,按照key來輸出map值

// map的排序
	map4 := make(map[int]string)
	map4[1] = "A"
	map4[4] = "B"
	map4[6] = "C"
	map4[3] = "D"

	// 定義一個切片
	var keys []int
	// 遍歷map
	for k, _ := range map4 {
		keys = append(keys, k)
	}
	// 對keys進行排序
	sort.Ints(keys)

	// 按keys的順序輸出map的值
	for _, key := range keys {
		fmt.Printf("map4[%v]= %v \n", key, map4[key])
	}

  • map是引用類型,遵守引用類型傳遞機制
  • map能自動擴容
  • map的value經常會使用struct類型,更適合管理複雜的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章