map和结构体切片
侧边栏壁纸
  • 累计撰写 6 篇文章
  • 累计收到 0 条评论

map和结构体切片

AILA
2024-07-19 17:07 / 0 评论 / 9 阅读
package main

import (
    "encoding/json"
    "fmt"
    "sync"
)

// 定义一个全局变量 persons,map 的值是一个 Person 结构体的切片
var persons map[string][]Person
var once sync.Once

// 初始化 persons 函数
func initializePersons() {
     once.Do(func(){
    // 确保只初始化一次 persons
        persons = make(map[string][]Person)
        fmt.Println("初始化函数")
    })

    
    // 添加一些数据
    persons["部门A"] = append(persons["部门A"], Person{Name: "小明", Age: 25})
    persons["部门A"] = append(persons["部门A"], Person{Name: "小红", Age: 30})

    persons["部门B"] = append(persons["部门B"], Person{Name: "张三", Age: 28})
    persons["部门B"] = append(persons["部门B"], Person{Name: "李四", Age: 32})
    persons["部门B"] = append(persons["部门B"], Person{Name: "王五", Age: 27})
}

// 定义一个结构体表示某种数据类型
type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    initializePersons()
    initializePersons()
    // 将 persons 转换为 JSON 格式并打印
    jsonData, err := json.MarshalIndent(persons, "", "    ")
    if err != nil {
        fmt.Println("JSON 编码失败:", err)
        return
    }

    fmt.Println(string(jsonData))
}

输出例子

{
    "部门A": [
        {
            "name": "小明",
            "age": 25
        },
        {
            "name": "小红",
            "age": 30
        }
    ],
    "部门B": [
        {
            "name": "张三",
            "age": 28
        },
        {
            "name": "李四",
            "age": 32
        },
        {
            "name": "王五",
            "age": 27
        }
    ]
}
0

评论

博主关闭了当前页面的评论