zoukankan      html  css  js  c++  java
  • golang-map的基本操作

    map的基本操作

    map的定义方式

    由于map是引用类型,所以在操作的时候,必须先初始化

    方式一:

    	var a map[string]int
    	a = make(map[string]int, 16)
    	fmt.Printf("a = %#v 
    ", a)
    	a["stu01"] = 1000
    

    方式二:

    	a := map[string]int{
    		"stu01": 100,
    		"stu03": 300,
    		"stu02": 200,
    	}
    	fmt.Printf("a = %#v 
    ", a)
    

    判断key是否存在

    在获取map的值得时候,可以接收两个值,一个是获取的值,一个是判断是否存在的bool类型,如果存在,返回对应值,bool为true,不存在,返回对应类型的空值,bool为false

    func test3() {
    	var a map[string]int
    	a = make(map[string]int, 16)
    	fmt.Printf("a = %#v 
    ", a)
    	a["stu01"] = 1000
    	a["stu02"] = 2000
    	var result int
    	var ok bool
    	var key string = "stu04"
    	result, ok = a[key]
    	if ok == false {
    		fmt.Printf("key is %s is not exist
    ", key)
    	} else {
    		fmt.Printf("key is %s = %d 
    ", key, result)
    	}
    }
    

    map的遍历key,value

    使用for ... range 的方法进行遍历,获取当中的值

    func test4() {
    	rand.Seed(time.Now().UnixNano())
    
    	var a map[string]int
    	a = make(map[string]int, 1024)
    	for i := 0; i < 128; i++ {
    		key := fmt.Sprintf("stu%d", i)
    		value := rand.Intn(1000)
    		a[key] = value
    	}
    	for key, value := range a {
    		fmt.Printf("map[%s]=%d
    ", key, value)
    	}
    }
    

    map删除元素

    使用内置的delete方法进行删除

    func test5() {
    	var a map[string]int
    	a = make(map[string]int, 16)
    	fmt.Printf("a = %#v 
    ", a)
    	a["stu01"] = 1000
    	a["stu02"] = 2000
    	a["stu03"] = 3000
    	fmt.Printf("a = %#v 
    ", a)
    	delete(a, "stu02")
    	fmt.Printf("DEL after a = %#v 
    ", a)
    }
    

    删除所有的,需要用for循环,挨个删除

    map的长度

    使用len内置函数求出

    map的复制

    map是引用类型,在系统中,复制的时候,指向的内存地址是一样的,所以修改一个,其他的也会跟着变更

    func test6() {
    	var a map[string]int
    	if a == nil {
    		a = make(map[string]int, 16)
    		a["stu01"] = 1000
    		a["stu02"] = 2000
    		a["stu03"] = 3000
    		fmt.Printf("a = %#v 
    ", a)
    		b := a
    		b["stu01"] = 8888
    		fmt.Printf("after modify a : %#v
    ", a)
    	}
    }
    

    map的切片

    由于map的value可以是数组,或者int,所以在value是数组的时候,使用的时候,也需要先初始化

    func main() {
    	rand.Seed(time.Now().UnixNano())
    	var s []map[string]int
    	s = make([]map[string]int, 5, 16)
    	for index, value := range s {
    		fmt.Printf("slice[%d] = %v 
    ", index, value)
    	}
    	fmt.Println()
    	s[0] = make(map[string]int, 16)
    	s[0]["stu01"] = 1000
    	s[0]["stu02"] = 2000
    	s[0]["stu03"] = 3000
    	for index, value := range s {
    		fmt.Printf("slice[%d] = %v 
    ", index, value)
    	}
    }
    
  • 相关阅读:
    BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps Office新的App模型
    android Notification 的使用(锁定通知栏)
    Android中经常使用的工具类02
    【python系列】python画报表(Chartkick、Flask)(附中文乱码解决方式)
    Nginx 笔记与总结(14)expires 缓存设置
    数据分析师、数据科学家常见的77个面试问题
    数据分析师、数据科学家常见的77个面试问题
    常见数据分析方法汇总
    常见数据分析方法汇总
    机器学习、数据挖掘、人工智能、统计模型这么多概念有何差异
  • 原文地址:https://www.cnblogs.com/fan-yi/p/13793658.html
Copyright © 2011-2022 走看看