次のようなデータベース内のオブジェクトを表す構造体があります。
type Object struct {
Id string
Field1 string
Field2 int
}
そして、フィールドが変更されるたびにデータベース内の特定のフィールドを更新する関数が必要です。次のようなものです。
func (self *Object) SetField1(value string) {
self.Field1 = value
database.Update(self.Id, "Field1", self.Field1) // pseudocode
}
ハードコーディングされた文字列を置き換える方法はあり"Field1"
ますか?私のコードは、構造体フィールドの順序付けと命名の将来の変更に耐性がありますか?
Reflect パッケージを調べてみました。使用しているフィールドを表す StructField を取得できると便利ですが、ハードコードされた文字列を介してフィールドの名前を指定するか、構造体のフィールドのインデックス (変更される可能性があります)。