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
}
]
}
评论