你刚才说可以使用第三方库,那你可以使用mapstructure提供一个DO,PO转换的代码样例吗?
时间: 2024-03-19 20:45:29 浏览: 98
当然可以,下面是使用mapstructure实现DO,PO转换的代码样例:
```go
package main
import (
"fmt"
"github.com/mitchellh/mapstructure"
)
type UserDO struct {
ID int `json:"id"`
Username string `json:"username"`
Password string `json:"password"`
}
type UserPO struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Password string `json:"password"`
}
func main() {
// 模拟从DAO层获取到的原始数据
data := map[string]interface{}{
"id": 1,
"username": "test",
"password": "123456",
}
// 将原始数据转换为DO对象
var userDO UserDO
err := mapstructure.Decode(data, &userDO)
if err != nil {
fmt.Println("decode error:", err)
return
}
fmt.Println("userDO:", userDO)
// 将DO对象转换为PO对象
var userPO UserPO
err = mapstructure.Decode(userDO, &userPO)
if err != nil {
fmt.Println("decode error:", err)
return
}
fmt.Println("userPO:", userPO)
}
```
在上述代码中,我们定义了一个UserDO对象和一个UserPO对象,分别表示数据访问对象和持久化对象。使用mapstructure.Decode函数可以将map类型的数据转换为UserDO对象,也可以将UserDO对象转换为UserPO对象。mapstructure.Decode函数使用方便,可以减少手动编写转换代码的工作量。