设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间01 现在时间01 缓存数据 当你走完一段之后回头看,你会发现,那些真正能被记得的事真的是没有多少,真正无法忘记的人屈指可数,真正有趣的日子不过是那么一些,而真正需要害怕的也是寥寥无几。

当你走完一段之后回头看,你会发现,那些真正能被记得的事真的是没有多少,真正无法忘记的人屈指可数,真正有趣的日子不过是那么一些,而真正需要害怕的也是寥寥无几。

查看: 1800|回复: 3

golang动态创建类的示例代码

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:203
  • 打卡月天数:0
  • 打卡总奖励:3703
  • 最近打卡:2023-08-27 01:46:11
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
422
主题
390
精华
0
金钱
4930
积分
842
注册时间
2022-12-29
最后登录
2025-9-11

发表于 2023-7-21 04:27:04 | 显示全部楼层 |阅读模式
动态创建类

(1.)使用反射创建类
  1. import `reflect`
  2. var typeRegistry = make(map[string]reflect.Type)
  3. func RegisterType(elem interface{}) {
  4.         t := reflect.TypeOf(elem).Elem()
  5.         typeRegistry[t.Name()] = t
  6. }
  7. func NewStruct(name string) (interface{}, bool) {
  8.         elem, ok := typeRegistry[name]
  9.         if !ok {
  10.                 return nil, false
  11.         }
  12.         return reflect.New(elem).Elem().Interface(), true
  13. }
复制代码
(2.)使用示例
  1. // 定义结构体
  2. type Student struct {
  3.       Name string
  4.       Age int
  5. }
  6. // 初始化时注册类型
  7. func init() {
  8.         RegisterType((*Student)(nil))
  9. }
  10. // 获取对象
  11. func getObj(structName string) (*Student, error) {
  12.         st, ok := NewStruct(structName)
  13.         if !ok {
  14.                 return nil, errors.New("new struct not ok")
  15.         }
  16.         student, ok := st.(Student)
  17.         if !ok {
  18.                 return nil, fmt.Errorf("assert st to Student error,st:%T", st)
  19.         }
  20.       // 给结构体字段赋值
  21.       student.Name = "jones"
  22.       student.Age = 18
  23.         return &student, nil
  24. }
  25. func main(){
  26.       // 获取一个对象
  27.       stu := getObj("Student")
  28.       fmt.Printf("stu:%+v",stu)
  29. }
复制代码
参考链接

https://blog.csdn.net/qq_41257365/article/details/114108970
https://blog.csdn.net/whatday/article/details/113773167
到此这篇关于golang动态创建类的文章就介绍到这了,更多相关golang动态创建类内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:24
  • 打卡月天数:1
  • 打卡总奖励:331
  • 最近打卡:2025-12-18 23:17:55
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
37
主题
19
精华
0
金钱
454
积分
108
注册时间
2023-1-1
最后登录
2025-12-18

发表于 2023-9-15 17:10:18 | 显示全部楼层
看看,学习学习~~~~
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
20
积分
20
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2025-2-27 09:30:57 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
20
积分
20
注册时间
2022-12-24
最后登录
2022-12-24

发表于 2025-11-7 13:06:09 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表