Golang 中 map 的 value 为结构体时修改成员变量的正确方法
在 Golang 中,当 map 的 value 为结构体时,可以修改结构体的成员变量。但是需要注意的是,如果直接从 map 中获取结构体的 value 并修改成员变量,会出现无法修改的情况。
这是因为在 Golang 中,map 的 value 是一个副本,而不是原始值的引用。当从 map 中获取一个结构体的 value 时,实际上是获取了该结构体的副本。对这个副本进行的修改不会影响原始的结构体。
要修改 map 中 value 结构体的成员变量,可以先获取结构体的指针,然后通过指针来修改成员变量。示例如下:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
people := make(map[string]Person)
people["John"] = Person{Name: "John", Age: 30}
// 获取结构体的指针
p := &people["John"]
// 修改结构体的成员变量
p.Age = 40
fmt.Println(people["John"]) // 输出: {John 40}
}
在上面的示例中,先获取了结构体的指针p := &people["John"],然后通过指针p来修改结构体的成员变量p.Age = 40。这样就能成功修改 map 中 value 结构体的成员变量。
原文地址: https://www.cveoy.top/t/topic/pW03 著作权归作者所有。请勿转载和采集!