MST

星途 面试题库

面试题:Go代码生成之结构体处理

在Go语言中,给定一个结构体定义如下: ```go type Person struct { Name string Age int } ``` 请编写代码生成一个包含10个`Person`结构体实例的切片,每个实例的`Name`和`Age`字段都需要随机生成(`Name`可使用简单字母组合,`Age`范围在18到60之间),并将这个切片序列化输出为JSON格式。
15.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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))
}
  1. 生成随机名字函数randomName函数通过在小写字母范围内随机选择字符,组合成一个长度为5的字符串作为随机名字。
  2. 主函数
    • 使用rand.Seed(time.Now().UnixNano())初始化随机数种子,确保每次运行程序生成的随机数不同。
    • 遍历10次,每次生成一个随机的Person结构体实例,添加到people切片中。
    • 使用json.MarshalIndentpeople切片序列化为JSON格式,并进行缩进格式化,最后输出结果。如果序列化过程出现错误,打印错误信息。