package main
import (
"encoding/json"
"fmt"
"math/rand"
"time"
)
type Person struct {
Name string
Age int
}
func randomName() string {
letters := "abcdefghijklmnopqrstuvwxyz"
result := ""
for i := 0; i < 5; i++ {
result += string(letters[rand.Intn(len(letters))])
}
return result
}
func main() {
rand.Seed(time.Now().UnixNano())
var people []Person
for i := 0; i < 10; i++ {
person := Person{
Name: randomName(),
Age: rand.Intn(43) + 18,
}
people = append(people, person)
}
data, err := json.MarshalIndent(people, "", " ")
if err != nil {
fmt.Println("序列化错误:", err)
return
}
fmt.Println(string(data))
}
- 生成随机名字函数:
randomName
函数通过在小写字母范围内随机选择字符,组合成一个长度为5的字符串作为随机名字。
- 主函数:
- 使用
rand.Seed(time.Now().UnixNano())
初始化随机数种子,确保每次运行程序生成的随机数不同。
- 遍历10次,每次生成一个随机的
Person
结构体实例,添加到people
切片中。
- 使用
json.MarshalIndent
将people
切片序列化为JSON格式,并进行缩进格式化,最后输出结果。如果序列化过程出现错误,打印错误信息。