Golang Go语言的自省能力是不是很弱?

发布于 1周前 作者 ionicwang 来自 Go语言

这么一来,设计一些框架感觉难度好高.

要设计像 rails 这样灵活的一个框架简直不可能了?

我是不是不应该有这样的想法?
Golang Go语言的自省能力是不是很弱?

29 回复

不知所云啊

更多关于Golang Go语言的自省能力是不是很弱?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


编译型的语言做自省这个事情,有可能是选错了方案

你确定要用一个强类型的语言实现 Rails 级别的灵活性?像 Time.now + 1.day 这种写法如果直接 port 到 Go 根本过不了编译器这关。

你不知道 动态一时爽,重构火葬场吗?

自省什么鬼…

反射吗? 还是和 反射 不太一样的另一种东西 . …

就是反射,翻译不同。

请使用 go generate

框架不是设计出来的,是实际项目做的过程中,剥离出来的,你路没走对。

东西都没做过就谈写框架?

看球不懂 什么是反射? 什么是自省

楼主解释一下什么叫自省能力?学习一下

我一直理解的自省和反射是不同的功能,自省只有查看属性功能,反射还能修改属性。

自省是 inspect ,反射是 reflect



自省是 introspection 吧

我看的是 python 的自省模块叫 inspect ,可能不是很正式的叫法。

不弱,但是语法太蛋疼。

“动态一时爽,重构火葬场” 这句翻译成英语应该怎么说才妙?

java 里面 introspection 都叫内省

楼上各位说的自省,反射
是不是指 meta-programming ?
如果是的话,静态语言的这类能力非常弱, 不要指望了

go1.5 bootstrap 以后应该会改善多了, 静态语言也可以啊, 只是程度问题。 不过要达到 ruby 的程度,不太现实, 这是一个语言设计时的调调决定的。

dynamic makes you holy good then all your famliy will die when reflection happens later
随手提供了下素材

我好像是被误导了,以前看哪本 Python 书把 reflection 翻译成自省了……

我觉得不够妙, 至少不如中文这个那么有意思, 还押韵… :)
重构也不是 reflection, 是 refactory 吧

有没有好好看入门的书,怎么会没有自省?!

reflect 可以检查 struct 、指针
runtime 可以检查运行状态,执行栈

楼主你还要什么?!

dynamic makes you shuangbility until Refactoring is coming !

动态语言重构怎么了 你们没有单元测试么

静态语言改一处,所有使用的地方,都会自动改。
个人觉得,对于没有外部兼容性要求的项目,单元测试真没意义。 对于我这种,编写边重构的人,单元测试执行一次就过时了。

单元测试是一种 adhoc 说明规格,虽然强大,但大部分时间不必要且不充分。依赖于单元测试,不如依赖于静态语言和集成测试。

关于Golang(Go语言)的自省能力,实际上存在一些误解。Go语言确实在某些方面没有像Python或Ruby那样强大的自省(reflection)机制,但这并不意味着它的自省能力弱。

Go语言的反射包(reflect)提供了足够的功能来检查变量的类型、值以及调用其方法。例如,你可以使用reflect.TypeOf来获取变量的类型信息,使用reflect.ValueOf来获取变量的值,甚至可以动态地调用方法或访问结构体字段。

然而,Go语言的设计哲学强调简洁和明确,这在一定程度上限制了反射的复杂性。Go语言的开发者倾向于使用明确的接口和类型声明来编写代码,而不是依赖反射来动态处理类型。这种设计有助于减少运行时错误和提高代码的可读性。

此外,Go语言的编译速度非常快,这在一定程度上得益于其类型系统的静态性。如果过度依赖反射,可能会牺牲编译速度和运行时性能。

因此,虽然Go语言的反射能力可能不如某些动态语言那么强大,但它提供了足够的功能来满足大多数需求。对于需要高度自省能力的场景,开发者可以通过其他方式(如接口和类型断言)来实现类似的功能。

总的来说,Go语言的自省能力并不弱,而是根据语言的设计哲学和性能考虑进行了适当的权衡。

回到顶部