分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
共享测试代码地址: http://dwz.cn/3vmUKW
```go
package main
import (
"encoding/json"
"fmt"
"reflect"
)
type DynamicType struct {
Id string
Name string
}
func getTargetObject(targetType reflect.Type, rawData []byte) interface{} {
ptr := reflect.New(targetType)
// 问题在这里 "DynamicType" 这个类型如果我写在这里就代表不是动态创建了
// 我希望可以用 targetType 或者其它变量或类型来实现动态创建对象
target := ptr.Elem().Interface().(DynamicType)
json.Unmarshal(rawData, target)
return target
}
func startConsumer() {
var from *DynamicType
fromType := reflect.TypeOf(from).Elem()
srcValue := &DynamicType{Id: "first", Name: "first"}
buf, _ := json.Marshal(srcValue)
converted := getTargetObject(fromType, buf)
// 在这里消费者可以确定类型
// 但是这样也无法正确的转换类型
if v, ok := converted.(DynamicType); ok {
fmt.Println(v)
}
}
func main() {
startConsumer()
}
```
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2495 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传