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

 更新时间:2021年04月28日 14:58:37   作者:RuoiseHone  
这篇文章主要介绍了golang 通过反射创建新对象的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

废话少说,直接贴代码~

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-cache读写锁实现多协程并发访问

    并发安全本地化存储go-cache读写锁实现多协程并发访问

    这篇文章主要介绍了并发安全本地化存储go-cache读写锁实现多协程并发访问,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Go 语言单例模式示例详解

    Go 语言单例模式示例详解

    这篇文章主要为大家介绍了Go 语言单例模式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • golang 数组随机排序的实现

    golang 数组随机排序的实现

    本文主要介绍了golang 数组随机排序的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • gorm FirstOrCreate和受影响的行数实例

    gorm FirstOrCreate和受影响的行数实例

    这篇文章主要介绍了gorm FirstOrCreate和受影响的行数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • GoLang中panic和recover作用详解

    GoLang中panic和recover作用详解

    panic 和 recover 是 Go 语言中用于处理异常和错误的机制,能够帮助我们应对意外情况并使程序更加健壮,这篇文章主要介绍了GoLang中panic和recover作用详解,需要的朋友可以参考下
    2024-05-05
  • Go语言method详解

    Go语言method详解

    这篇文章主要介绍了Go语言method详解,本文总结了在使用method的时候重要注意几点、指针作为receiver、method继承等内容,需要的朋友可以参考下
    2014-10-10
  • Go空结构体struct{}的作用是什么

    Go空结构体struct{}的作用是什么

    本文主要介绍了Go空结构体struct{}的作用是什么,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Go语言继承功能使用结构体实现代码重用

    Go语言继承功能使用结构体实现代码重用

    今天我来给大家介绍一下在 Go 语言中如何实现类似于继承的功能,让我们的代码更加简洁和可重用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Golang开发命令行之flag包的使用方法

    Golang开发命令行之flag包的使用方法

    这篇文章主要介绍Golang开发命令行及flag包的使用方法,日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,本文围绕该内容展开话题,需要的朋友可以参考一下
    2021-10-10
  • go语言gin框架中间件详解

    go语言gin框架中间件详解

    在Go语言中,gin是一个常用的Web框架,用于构建RESTful API和Web应用程序。本文将通过代码示例详细介绍了gin框架中间件,感兴趣的同学可以参考阅读
    2023-04-04

最新评论