什么是map?
在go中,map是将值(key)和建(value)关联的内置类型,通过相应的键可以获取到值。
声明:
func main() {
var mapList map[string]int
if mapList == nil {
fmt.Println(mapList)
}
}
初始化/创建:
func main() {
var mapList map[string]int
mapList["a"] = 1
mapList["b"] = 2
mapList["c"] = 3
fmt.Println(mapList)
}
func main() {
var mapList map[string]int
if mapList == nil{
mapList = make(map[string]int)
}
mapList["a"] = 1
mapList["b"] = 2
mapList["c"] = 3
fmt.Println(mapList)
}
func main() {
var mapList map[string]int
if mapList == nil{
mapList = make(map[string]int)
}
mapList[""] = 1
mapList[""] = 4
mapList["a"] = 2
mapList["a"] = 5
mapList["c"] = 3
fmt.Println(mapList)
}
创建时初始化
mapListTwo := map[string]int{
"string":100,
"":110,
"go":120,
}
fmt.Println(mapListTwo)
获取元素
str := mapList["a"]
fmt.Println(str,mapList[""],mapList["66"])
mapListTwo := map[string]string{
"string":"100",
"":"110",
"go":"120",
}
mapListOne := map[string]int{
"string":100,
"":110,
"go":120,
}
str := mapListTwo["a"]
if str == "" {
fmt.Println("str :",str )
}
stri := mapListOne["a"]
if stri == 0 {
fmt.Println("stri :",stri )
}
判断元素是否存在map中
func main() {
mapListOne := map[string]int{
"string":100,
"":110,
"go":120,
}
value,ok := mapListOne["string"]
if ok == true {
fmt.Println("string : ",value,ok)
}
values,oks := mapListOne["java"]
if oks {
fmt.Println("java is ture: ",values,oks)
} else {
fmt.Println("java is false: ",values,oks)
}
}
遍历map中的所有元素:for range (使用时不能保证每次执行程序获取的元素顺序都相同)
func main() {
var mapList map[string]int
mapList = make(map[string]int)
mapList["string"] = 100
mapList["java"] = 200
mapList["go"] = 300
simpleMap := map[string]string{
"JSON":"JSON",
"java":"java",
}
for key,value := range simpleMap {
fmt.Printf("simpleMap[%s] = %s \n",key,value)
}
for key,value := range mapList {
fmt.Printf("mapList[%s] = %d \n",key,value)
}
}
删除map中的元素
func main() {
mapList := map[string]int{
"string":1000,
"go":2000,
"map":3000,
}
fmt.Println("mapList all ",mapList," length is ",len(mapList))
delete(mapList,"map")
fmt.Println("mapList deletion all ",mapList,"length is ",len(mapList))
}
map 是引用类型,对map元素的改变即在改变这个map,且这个修改是显性的。 map 类型之间不能使用 == 符判断,== 是能用来判断该map是否初始化为nil 。 map声明后必须要初始化才可以使用。 key必须是支持==或!=比较运算的类型(其类型的默认值也可以当作一个key),不可以是函数、map或slice。 使用for range 遍历时是无序的
|