• go语言的map


    go语言map

    go语言的map是一个key-value的数据结构,它是go提供的映射关系的容器,内部使用hash实现。map是引用类型,必须初始化才能使用。

    map的定义

    package main
    
    import "fmt"
    
    func main() {
    	//声明一个空的map,没有申请到内存
    	//var dict map[string] string
    	// 空的map不可以直接使用,这个是错误的
    	//dict["user"] = "ivy"
    	//fmt.Println(dict) // panic: assignment to entry in nil map
    	var dict = map[string]string{"user": "ivy",}
    	// 给map设置key-value
    	dict["age"] = "18"
    	fmt.Println(dict) // map[age:18 user:ivy]
    
    	dict1 := make(map[string]string, 10)
    	dict1["user"] = "ivy"
    	fmt.Println(dict1) // map[user:ivy]
    }
    
    
    • 空的map(nil)没有申请内存空间的不可以直接使用
    • 可以使用make来声明一个申请内存的空map,此时的map可以直接被使用
    • map相当于python的字典,没有顺序,但它的键和值都必须为声明时键值的类型
    • map的取值直接使用map[key]即可
    • map的赋值直接使用map[key] = value

    map取值

    package main
    
    import "fmt"
    
    func main() {
    	dict := make(map[string]string, 10)
    	value, ok := dict["data"]
    	if !ok {
    		fmt.Println("没有这个值!") // 没有这个值!
    	} else {
    		fmt.Println(value)
    	}
    }
    

    map取值的时候会返回value和一个布尔值,布尔值代表有没有取到值,value为取到的值

    map的遍历

    package main
    
    import "fmt"
    
    func main() {
    	dict := map[string]string{
    		"user": "ivy",
    		"age":  "18",
    		"sex":  "male",
    	}
    
    	for k, v := range dict {
    		fmt.Println(k, v)
    		//sex male
    		//user ivy
    		//age 18
    	}
    }
    

    map的删除

    map的删除使用的是内置的delete函数
    delete不同于slice的append,delete直接作用的是原来的对象,而append返回的是新的对象

    package main
    
    import "fmt"
    
    func main() {
    	dict := map[string]string{
    		"user": "ivy",
    		"age":  "18",
    		"sex":  "male",
    	}
    
    	delete(dict, "user")
    	fmt.Println(dict) // map[age:18 sex:male]
    	delete(dict, "hobby")
    	fmt.Println(dict) // map[age:18 sex:male]
    }
    
    

    当时用delete去删除一个不存在的key时,此次delete不会报错
    直接使用goland查看delete的源码的dockey看到

    // The delete built-in function deletes the element with the specified key
    // (m[key]) from the map. If m is nil or there is no such element, delete
    // is a no-op.
    

    当key不存在时,delete不做任何操作

  • 相关阅读:
    优化-UITableView性能
    优化-预渲染加速iOS设备的图像显示
    UIWebView
    NSJSONSerialization
    UITableView UITableViewCell NSIndexPath
    NSDictionary NSMutableDictionary
    iOS Delegate NSNotificationCenter
    Php解决跨域名共享session方案整理专题
    memached共享session
    二级域名 session共享
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/12654668.html
Copyright © 2020-2023  润新知