当前位置:  开发笔记 > 编程语言 > 正文

Go中是否应避免使用反射?

如何解决《Go中是否应避免使用反射?》经验,为你挑选了2个好方法。

我是新来的Go,也对新的概念reflection,但应该可以的使用反映包避免Go?是否存在reflect不可避免的情况?



1> kostya..:

有一些问题域,反射使编写可重用库变得更容易:

编组/解组,标准库中的大量示例,例如encoding/json,encoding/xml

格式化,例如text/template,html/template,fmt.Printf.

但是,使用反射需要付出代价:

编译时错误成为运行时错误(例如fmt.Printf("%d", stringVariable))

表现变得更糟

通常存在一种替代解决方案,其不需要诸如代码生成之类的反射,其由诸如protobuf或thrift的编组库使用.

我同意@volker的说法,只有当你知道它会简化现有代码并了解所有缺点时,才应该使用反射.



2> Volker..:

你应该避免反思.

某些软件包(例如fmt)无法在没有反射的情况下实现,因为您无法在所有现有和即将推出的类型上进行类型切换.

如果你是Go的新手:远离反思.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有