ShowProgramCode

2023年9月26日 星期二

golang 的 automapper

在C#有automapper套件,可以將兩個相似的資料結構Mapping內容。
光是這個鏡射寫入屬性值的功能,讓我可以不用每次遇到類似的物件都要一個個屬性賦值,就已經非常好用了。
最近必須要些golang時,也遇到了類似的問題,目前找到一個還可以用的套件,特別記錄下來。
(其實是因為上次程式碼即便上了git也一下子找不到...哭...)

import (
"github.com/mitchellh/mapstructure"
)

type User struck{
Id int
Name string
Phone string
....
}

type Member struck{
Name string
Phone string
...
}

//從資料庫讀取使用者後,將資料放入Member
var member Member{}
user := db.load(id)
err = mapstructure.Decode(user, &member)

這樣就可以將相同屬性名稱的值寫入member。
假使兩個欄位名稱有出入該怎麼辦??
目前還沒有測試到那裡,也許這個套件也有提供類似的功能,今天簡單記錄到此。