脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - golang map的基本操作及定义方式

golang map的基本操作及定义方式

2022-11-13 11:12S前进的中浪S Golang

这篇文章主要介绍了golang-map的基本操作,由于map是引用类型,所以在操作的时候,必须先初始化,本文通过多种方式给大家讲解map的定义方式,需要的朋友可以参考下

map的基本操作

map的定义方式

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

方式一:

?
1
2
3
4
var a map[string]int
    a = make(map[string]int, 16)
    fmt.Printf("a = %#v \n", a)
    a["stu01"] = 1000

方式二:

?
1
2
3
4
5
6
a := map[string]int{
        "stu01": 100,
        "stu03": 300,
        "stu02": 200,
    }
    fmt.Printf("a = %#v \n", a)

判断key是否存在

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func test3() {
    var a map[string]int
    a = make(map[string]int, 16)
    fmt.Printf("a = %#v \n", 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\n", key)
    } else {
        fmt.Printf("key is %s = %d \n", key, result)
    }
}

map的遍历key,value

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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\n", key, value)
    }
}

map删除元素

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

?
1
2
3
4
5
6
7
8
9
10
11
func test5() {
    var a map[string]int
    a = make(map[string]int, 16)
    fmt.Printf("a = %#v \n", a)
    a["stu01"] = 1000
    a["stu02"] = 2000
    a["stu03"] = 3000
    fmt.Printf("a = %#v \n", a)
    delete(a, "stu02")
    fmt.Printf("DEL after a = %#v \n", a)
}

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

map的长度

使用len内置函数求出

map的复制

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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 \n", a)
        b := a
        b["stu01"] = 8888
        fmt.Printf("after modify a : %#v\n", a)
    }
}

map的切片

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 \n", 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 \n", index, value)
    }
}

到此这篇关于golang-map的基本操作的文章就介绍到这了,更多相关golang map内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/fan-yi/p/13793658.html

延伸 · 阅读

精彩推荐
  • Golanggolang简单位运算示例

    golang简单位运算示例

    这篇文章主要介绍了golang简单位运算,包括位移运算、取反及位与位或等运算,需要的朋友可以参考下 ...

    脚本之家4902020-04-29
  • GolangGo语言中http和mysql的实现代码

    Go语言中http和mysql的实现代码

    本文通过实例代码给大家介绍了Go语言中http和mysql的实现代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 ...

    骑士救兵3232020-05-21
  • Golanggo-zero 应对海量定时/延迟任务的技巧

    go-zero 应对海量定时/延迟任务的技巧

    这篇文章主要介绍了go-zero 如何应对海量定时/延迟任务,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    Kevin Wan8342021-01-27
  • GolangGo语言实现操作MySQL的基础知识总结

    Go语言实现操作MySQL的基础知识总结

    这篇文章主要总结一下怎么使用Go语言操作MySql数据库,文中的示例代码讲解详细,需要的朋友可以参考以下内容,希望对大家有所帮助...

    yi个俗人4472022-11-13
  • GolangGo编译原理之函数内联

    Go编译原理之函数内联

    这篇文章主要为大家介绍了Go编译原理之函数内联示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    书旅5782022-08-05
  • GolangGo 实现一次性打包各个平台的可执行程序

    Go 实现一次性打包各个平台的可执行程序

    这篇文章主要介绍了Go 实现一次性打包各个平台的可执行程序,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    靳江海9432021-02-23
  • Golanggolang goroutine顺序输出方式

    golang goroutine顺序输出方式

    这篇文章主要介绍了golang goroutine顺序输出方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    浩闻城6622021-06-09
  • Golanggo语言beego框架分页器操作及接口频率限制示例

    go语言beego框架分页器操作及接口频率限制示例

    这篇文章主要为大家介绍了go语言beego框架分页器操作使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪...

    Jeff的技术栈11562022-09-24