feat: 在 rfx.String() 中,先尝试用 cast.ToStringE 将当前值转为字符串,如果失败则增加了一个兜底逻辑:尝试使用 json.Marshal 将当前值序列化为 JSON 字符串并返回
This commit is contained in:
parent
b373dde7f7
commit
243d1ffac8
8
rfx.go
8
rfx.go
@ -1,6 +1,7 @@
|
|||||||
package reflux
|
package reflux
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -657,10 +658,15 @@ func (r *rfx) Uint8() uint8 {
|
|||||||
|
|
||||||
// String 将当前值转换为 string 类型
|
// String 将当前值转换为 string 类型
|
||||||
func (r *rfx) String() string {
|
func (r *rfx) String() string {
|
||||||
result, err := cast.ToStringE(r.Any())
|
data := r.Any()
|
||||||
|
result, err := cast.ToStringE(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if b, e := json.Marshal(data); e == nil {
|
||||||
|
result = string(b)
|
||||||
|
} else {
|
||||||
panic(fmt.Sprintf("rfx: failed to convert to string: %v", err))
|
panic(fmt.Sprintf("rfx: failed to convert to string: %v", err))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user