golang struct 动态增加字段
时间: 2023-07-18 15:19:39 浏览: 374
golang常用库之字段参数验证库-validator使用详解
在 Golang 中,结构体的字段是在编译时确定的,因此不能动态增加字段。如果需要动态增加字段,可以考虑使用 map 类型,将字段名作为 key,字段值作为 value。
以下是一个示例代码:
```go
type Person struct {
Name string
Age int
Extra map[string]interface{}
}
func main() {
p := Person{Name: "John", Age: 30, Extra: make(map[string]interface{})}
p.Extra["Address"] = "123 Main St."
p.Extra["Phone"] = "123-456-7890"
fmt.Println(p) // Output: {John 30 map[Address:123 Main St. Phone:123-456-7890]}
}
```
在上面的代码中,我们为 `Person` 结构体类型增加了一个名为 `Extra` 的字段,类型为 `map[string]interface{}`。`Extra` 字段可以存储任意数量和类型的额外字段。
接着,我们创建了一个名为 `p` 的 `Person` 结构体实例,并在 `Extra` 字段中动态添加了两个字段:`Address` 和 `Phone`。
最后,我们使用 `fmt.Println` 函数打印出结构体变量 `p` 的值。输出结果为 `{John 30 map[Address:123 Main St. Phone:123-456-7890]}`,其中 `map[Address:123 Main St. Phone:123-456-7890]` 表示 `Extra` 字段的值。
阅读全文