09 引用型別 2 集合

2021-10-25 12:05:21 字數 1612 閱讀 7722

go內建了map型別,map是乙個無序鍵值對集合(也有一些書籍翻譯為字典)。

普通建立:

// 宣告乙個map型別,內的型別指任意可以進行比較的型別 int指值型別

m :=

map[

string

]int

fmt.

print

(m["a"

])

make方式建立map:

type person struct

func

main()

p,isfind := m[

"123"

] fmt.

println

(isfind)

//true

fmt.

println

(p)//

}

注意:golang中map的 key 通常 key 為 int 、string,但也可以是其他型別如:bool、數字、string、指標、channel,還可以是只包含前面幾個型別的介面、結構體、陣列。slice、map、function由於不能使用 == 來判斷,不能作為map的key。

通過key操作元素:

var numbers map

[string

]int

numbers =

make

(map

[string

]int

)numbers[

"one"]=

1//賦值

numbers[

"ten"]=

10//賦值

numbers[

"three"]=

3delete

(numbers,

"ten"

)// 刪除key為 ten 的元素

fmt.

println

("第三個數字是: "

, numbers[

"three"])

// 讀取資料

map的遍歷:同陣列一樣,使用for-range 的結構遍歷

注意

演示併發讀寫map的問題:

package main

func

main()

}()go

func()

}()for

//無限迴圈,讓併發程式在後台執行

}

go內建的map只有讀是執行緒安全的,讀寫是執行緒不安全的。

需要併發讀寫時,一般都是加鎖,但是這樣做效能不高,在go1.9版本中提供了更高效併發安全的sync.map。

sync.map的特點:

package main

import

("fmt"

"sync"

)func

main()

)bool

)}

注意:map沒有提供獲取map數量的方法,可以在遍歷時手動計算。sync.map為了併發安全。損失了一定的效能。

python 基礎學習 09 集合

集合表現形式set 集合和列表非常相似 不同點 集合只能儲存不可變物件 s print s,type s typeerror unhashable type list 集合中儲存的物件是無序的 而列表是有序的 集合不能出現重複元素 s print s,type s class set 使用 來建立集...

Python基礎學習09 集合

1 使用花括號 s print s print type s 集合中重複的元素會被去除掉 s print s 不能使用 表示空集合,因為 表示空字典 s print type s 2 呼叫內建函式set 類set的構造方法 print set range 1,6 print set 3,5,9,2 ...

5 0 引用型別

ecmascript中有5中簡單資料型別 也叫基本資料型別 undefined boolean null number string。還有一種複雜資料型別 object object本質上是一組無序的明值対組成的 1 應用型別的值 物件 是引用型別的乙個例項。2 在es種,引用型別是一種資料結構,用...