主页 > 知识库 > golang 如何通过反射创建新对象

golang 如何通过反射创建新对象

热门标签:电话机器人软件免费 excel地图标注分布数据 外呼系统用什么卡 寿光微信地图标注 评价高的400电话办理 外呼系统显本地手机号 涿州代理外呼系统 阿克苏地图标注 百度地图标注后传给手机

废话少说,直接贴代码~

type A struct {
 Name string
}
 
// 测试unit
func TestReflect(t *testing.T)  {
 reflectNew((*A)(nil))
}
 
//反射创建新对象。
func reflectNew(target interface{})  {
 if target == nil {
  fmt.Println("参数不能未空")
  return
 }
 
 t := reflect.TypeOf(target)
 if t.Kind() == reflect.Ptr { //指针类型获取真正type需要调用Elem
 t = t.Elem()
 }
 
 newStruc := reflect.New(t)// 调用反射创建对象
 newStruc.Elem().FieldByName("Name").SetString("Lily") //设置值
 
 newVal := newStruc.Elem().FieldByName("Name") //获取值
 fmt.Println(newVal.String())
}

补充:Go语言中创建对象的几种方式

对于Go对象

type Car struct {
    color string
    size  string
}

方式一:

使用T{…}方式,结果为值类型

c := Car{}

方式二:

使用new的方式,结果为指针类型

c1 := new(Car)

方式三:

使用方式,结果为指针类型

c2 := Car{}

以下为创建并初始化

c3 := Car{"红色", "1.2L"}
c4 := Car{color: "红色"}
c5 := Car{color: "红色"}

构造函数:

在Go语言中没有构造函数的概念,对象的创建通常交由一个全局的创建函数来完成,以 NewXXX 来命名,表示“构造函数” :

func NewCar(color,size string)*Car  {
    return Car{color,size}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • Go语言变量创建的五种方法
  • Go语言创建、初始化数组的常见方式汇总
  • Go语言中的复合类型详细介绍

标签:钦州 鸡西 吐鲁番 铜川 兰州 汕头 重庆 梅河口

巨人网络通讯声明:本文标题《golang 如何通过反射创建新对象》,本文关键词  golang,如何,通过,反射,创,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《golang 如何通过反射创建新对象》相关的同类信息!
  • 本页收集关于golang 如何通过反射创建新对象的相关信息资讯供网民参考!
  • 推荐文章