Map转换
转换方法:
package main
import (
"fmt"
"github.com/gogf/gf/util/gconv"
)
func main() {
type User struct {
Uid int `c:"uid"`
}
// 对象
fmt.Println(gconv.Map(User{
Uid : 1,
Name : "john",
}))
// 对象指针
fmt.Println(gconv.Map(&User{
Uid : 1,
Name : "john",
}))
fmt.Println(gconv.Map(map[int]int{
100 : 10000,
}))
}
执行后,输出结果如下:
map[uid:1 name:john]
map[uid:1 name:john]
map[100:10000]
执行后,输出结果为:
map[Uid:100 password1:123 password2:456]
package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gconv"
)
func main() {
type User struct {
Id int `c:"uid"`
Name string `my-tag:"nick-name" c:"name"`
}
user := &User{
Id: 1,
}
g.Dump(gconv.Map(user, "my-tag"))
}
当参数为map
/struct
/*struct
类型时,如果键值/属性为一个对象(或者对象指针)时,Map
方法将会将对象转换为结果的一个键值。我们可以使用MapDeep
方法递归转换参数的子对象。
使用示例:
package main
import (
"fmt"
"github.com/gogf/gf/util/gconv"
)
func main() {
type Base struct {
Id int `c:"id"`
CreateTime string `c:"create_time"`
}
type User struct {
Base `c:"base"`
Passport string `c:"passport"`
Password string `c:"password"`
Nickname string `c:"nickname"`
}
user := new(User)
user.Id = 1
user.Nickname = "John"
user.Passport = "johng"
user.Password = "123456"
user.CreateTime = "2019"
fmt.Println(gconv.Map(user))
fmt.Println(gconv.MapDeep(user))
}
map[create_time:2019 id:1 nickname:John passport:johng password:123456]