Go语言中的结构体与Map:简洁、灵活的数据结构组合

在 Go 语言中,你可以使用 map 来存储结构体的实例。这种情况下,结构体实例作为值被关联到 map 的键上。以下是一个简单的示例:

Go 复制代码
package main

import "fmt"

// 定义一个结构体
type Person struct {
    FirstName string
    LastName  string
    Age       int
}

func main() {
    // 创建一个 map,键是字符串,值是 Person 结构体
    peopleMap := make(map[string]Person)

    // 添加结构体实例到 map
    peopleMap["alice"] = Person{FirstName: "Alice", LastName: "Doe", Age: 25}
    peopleMap["bob"] = Person{FirstName: "Bob", LastName: "Smith", Age: 30}

    // 获取结构体实例
    alice := peopleMap["alice"]
    bob := peopleMap["bob"]

    // 打印信息
    fmt.Println("Alice:", alice)
    fmt.Println("Bob:", bob)
}

在这个例子中,peopleMap 是一个 map,其键是字符串,值是 Person 结构体的实例。你可以通过键来检索对应的结构体实例。

请注意,map 中的值是结构体的拷贝,而不是指向原始结构体的引用。这意味着对 map 中的结构体进行修改不会影响原始结构体。

如果你希望 map 中存储的是结构体的指针,可以将结构体的指针作为值存储:

Go 复制代码
package main

import "fmt"

type Person struct {
    FirstName string
    LastName  string
    Age       int
}

func main() {
    peopleMap := make(map[string]*Person)

    peopleMap["alice"] = &Person{FirstName: "Alice", LastName: "Doe", Age: 25}
    peopleMap["bob"] = &Person{FirstName: "Bob", LastName: "Smith", Age: 30}

    alice := peopleMap["alice"]
    bob := peopleMap["bob"]

    fmt.Println("Alice:", *alice)
    fmt.Println("Bob:", *bob)
}

在这个例子中,peopleMap 中的值是指向 Person 结构体的指针。这样,对 map 中的结构体进行修改会影响原始结构体。

相关推荐
地平线开发者6 小时前
profiler debug 工具用法与高一致性策略
算法·自动驾驶
编程大师哥6 小时前
匿名函数 lambda + 高阶函数
java·python·算法
isyangli_blog6 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008116 小时前
FastAPI APIRouter
开发语言·python
Benszen6 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆6 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木6 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
我叫袁小陌6 小时前
算法解题思路指南
算法
地平线开发者6 小时前
Conv+BN+Add+ReLU 融合机制简介
算法·自动驾驶
喵个咪7 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm