美文网首页
Go中Map原地修改value

Go中Map原地修改value

作者: 浑浑噩噩_邋邋遢遢 | 来源:发表于2017-07-11 21:43 被阅读0次
首先记住一句话,等号两边类型匹配

在Go语言中,Map中的值是不可以原地修改的,如:

package main

type Student struct {
    Name string
    Id int
}

func main() {
    s := make(map[string]Student)
    s["chenchao"] = Student{
        Name:"chenchao",
        Id:111,
    }
    s["chenchao"].Id = 222

}

上面的代码会编译失败,因为在go中 map中的赋值属于值copy,就是在赋值的时候是把Student的完全复制了一份,复制给了map。而在go语言中,是不允许将其修改的。
但是如果map的value为int,是可以修改的,因为修改map中的int属于赋值的操作。

package main

type Student struct {
    Name string
    Id int
}

func main() {
    s1 := make(map[string]int)
    s1["chenchao"] = 2
    s1["chenchao"] = 3
}

那么,如何在go语言中原地修改map中的value呢? 答案是:传指针!

package main

import "fmt"

type Student struct {
    Name string
    Id int
}

func main() {
    s := make(map[string]*Student)
    s["chenchao"] = &Student{
        Name:"chenchao",
        Id:111,
    }
    s["chenchao"].Id = 222
    fmt.Println(s)
}

在结构体比较大的时候,用指针效率会更好,因为不需要值copy
当然,如果map中的value为 *int指针类型,那么在赋值时不可以用&123,因为int为常亮,不占内存,没有内存地址

package main

import "fmt"

type Student struct {
    Name string
    Id int
}

func main() {
    s2 := make(map[string]*int)
    n := 1
    s2["chenchao"] = &n
    fmt.Println(s2)
}

相关文章

  • Go中Map原地修改value

    首先记住一句话,等号两边类型匹配 在Go语言中,Map中的值是不可以原地修改的,如: 上面的代码会编译失败,因为在...

  • PHP中foreach引用的坑

    背景 已知一个map如下: 想要做的操作: 修改map中每个value的值 将map中的所有value放入一个数组...

  • Go-Map

    go map golang中的map是一种(无序的)key-value形式的数据结构,类似python中的字典,默...

  • Go学习笔记四(Map扩展)

    Map 与⼯厂模式 Map 的 value 可以是一个⽅法 实现Set Go 的内置集合中没有 Set 实现, 可...

  • Dart -- Map

    方法 update() 对指定的key的value做出修改 Map map23 = {"a":1,"b":...

  • 13. Maps

    13. Maps 什么是 map ? map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相...

  • Go一个函数式编程小设计

    用map加func设计插件式的程序 巧妙了运用了函数在go中是“一等公民“”的特性。创建一个map,并将value...

  • 【go语言学习】映射map

    Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key-value对的集合。Go语言中的map...

  • Map

    let map=new Map()let map=new Map([key,value],[key,value])...

  • Golang基础之Map

    map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map的定...

网友评论

      本文标题:Go中Map原地修改value

      本文链接:https://www.haomeiwen.com/subject/butvhxtx.html