Go構造体に動的にフィールドを追加する方法について教えてください。
Go言語では構造体はフィールドが固定されたデータ型であり,実行時に動的にフィールドを追加することはできません。これはGo言語が静的型付け言語であるためであり,すべての変数とフィールドはコンパイル時に確定する必要があります。実行時に動的にフィールドを追加する必要がある場合は,構造体の代わりにmapを使用することを検討してください。
Mapを利用すれば、動的にキーと値のペアを追加することができ、これは動的にフィールドとその値を追加するのと同じです。
package main
import "fmt"
type Person struct {
data map[string]interface{}
}
func main() {
p := Person{
data: make(map[string]interface{}),
}
p.data["name"] = "Alice"
p.data["age"] = 25
fmt.Println(p.data["name"]) // 输出:Alice
fmt.Println(p.data["age"]) // 输出:25
}
上記の例ではPersonという構造体を作り、dataというフィールドをmap[string]interface{}の形で持たせました。 main関数では、dataフィールドにキーと値による動的なフィールド値の追加ができます。mapの値の型はinterface{}なので、どのような型でも受け取ることができます。