Loading

Golang map的使用

一:基本语法:

var 变量名  map[keytype]valuetype

keytype 的类型:bool、数字、string、指针、channel,还可以是只包含前面几个类型的接口、结构体、数组,通常为int、string

注意:slice、map还有function不可以为keytype,因为这几个没法用 == 来判断

valuetype 的类型:和 keytype 基本一样,通常为数字、string、map、结构体

举例:var a map[string]string、var a map[string]int、var a map[int]string、var a map[string]map[string][string]

举例说明:

//声明一个map
var a map[string][string]
//使用make给map分配数据空间
a = make(map[string][string],10)
a["name"] = "carver"
fmt.Println(a)

注意:声明是不会分配内存的、初始化需要make,分配内存后才能赋值和使用,map是无序的

map的声明方式如下:

  • 方式1

    //先声明,再make
    var person map[string][string]
    person = make(map[string][string],10)
  • 方式2

    //直接make
    var person = make(map[string][string])
    person["name"] = "carver"
    person["age"] = 34
  • 方式3

    //生命并赋值
    var person map[string]string = map[string]string{
        "name":"张三",
          "age":23,
    }
    person["name"] = "李四"


多个map使用如下:

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

studentMap := make(map[string]map[string]string)

studentMap["student01"] = make(map[string]string,3)

studentMap["student01"]["name"] = "carver"

studentMap["student01"]["sex"] = "男"


studentMap["student02"] = make(map[string]string,3)

studentMap["student01"]["name"] = "carvers"

studentMap["student01"]["sex"] = "女"

fmt.Println(studentMap["student01"]["sex"])

map的删除操作

person := make(map[string][string]) 
person["name1"] = "carver1"
person["name2"] = "carver2"
//删除指定key的map
delete(person,"name2")
//删除所有key
person = make(map[string][string]) 

map的查找操作

person := make(map[string][string]) 
person["name1"] = "carver1"
person["name2"] = "carver2"

val,ok := person["name2"]
if ok {
    Println("有 name2 的key ,值为%v\n",val)
}else{
    Println("没有 name2 的key")
}

二:map切片

切片的数据类型如果是map,map数就可以动态变化了

 

posted @ 2024-10-01 15:13  Carver大脸猫  阅读(4)  评论(0)    收藏  举报