mirror of
https://gitee.com/johng/gf.git
synced 2024-12-01 19:57:40 +08:00
fix: multiple interfaces cause the original type to be inaccessible (#2915)
This commit is contained in:
parent
3da5e5e865
commit
097b26f318
@ -194,7 +194,7 @@ func doConvert(in doConvertInput) (convertedValue interface{}) {
|
||||
}
|
||||
return Time(in.FromValue)
|
||||
case "*time.Time":
|
||||
var v interface{}
|
||||
var v time.Time
|
||||
if len(in.Extra) > 0 {
|
||||
v = Time(in.FromValue, String(in.Extra[0]))
|
||||
} else {
|
||||
|
@ -8,7 +8,9 @@ package gconv_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
@ -43,6 +45,12 @@ func TestConverter_Struct(t *testing.T) {
|
||||
ValTa tB
|
||||
}
|
||||
|
||||
type tEE struct {
|
||||
Val1 time.Time `json:"val1"`
|
||||
Val2 *time.Time `json:"val2"`
|
||||
Val3 *time.Time `json:"val3"`
|
||||
}
|
||||
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
a := &tA{
|
||||
Val: 1,
|
||||
@ -174,6 +182,23 @@ func TestConverter_Struct(t *testing.T) {
|
||||
t.Assert(dd.ValTa.Val1, 234)
|
||||
t.Assert(dd.ValTa.Val2, "abc")
|
||||
})
|
||||
|
||||
// fix: https://github.com/gogf/gf/issues/2665
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
aa := &tEE{}
|
||||
|
||||
var tmp = map[string]any{
|
||||
"val1": "2023-04-15 19:10:00 +0800 CST",
|
||||
"val2": "2023-04-15 19:10:00 +0800 CST",
|
||||
"val3": "2006-01-02T15:04:05Z07:00",
|
||||
}
|
||||
err := gconv.Struct(tmp, aa)
|
||||
t.AssertNil(err)
|
||||
t.AssertNE(aa, nil)
|
||||
t.Assert(aa.Val1.Local(), gtime.New("2023-04-15 19:10:00 +0800 CST").Local().Time)
|
||||
t.Assert(aa.Val2.Local(), gtime.New("2023-04-15 19:10:00 +0800 CST").Local().Time)
|
||||
t.Assert(aa.Val3.Local(), gtime.New("2006-01-02T15:04:05Z07:00").Local().Time)
|
||||
})
|
||||
}
|
||||
|
||||
func TestConverter_CustomBasicType_ToStruct(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user