V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
yuankui
V2EX  ›  Go 编程语言

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

  •  2
     
  •   yuankui · 2016-01-06 17:06:06 +08:00 · 2692 次点击
    这是一个创建于 3035 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这么一来,设计一些框架感觉难度好高.

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

    我是不是不应该有这样的想法?
    28 条回复    2016-02-19 09:14:37 +08:00
    ixiaohei
        1
    ixiaohei  
       2016-01-06 17:31:13 +08:00
    不知所云啊
    sophymax
        2
    sophymax  
       2016-01-06 17:39:37 +08:00
    编译型的语言做自省这个事情,有可能是选错了方案
    eric
        3
    eric  
       2016-01-06 17:46:40 +08:00
    你确定要用一个强类型的语言实现 Rails 级别的灵活性?像 `Time.now + 1.day` 这种写法如果直接 port 到 Go 根本过不了编译器这关。
    firefox12
        4
    firefox12  
       2016-01-06 17:57:02 +08:00   ❤️ 8
    你不知道 动态一时爽,重构火葬场吗?
    itfanr
        5
    itfanr  
       2016-01-06 18:16:15 +08:00
    @firefox12 哈哈!!!
    500miles
        6
    500miles  
       2016-01-06 18:36:51 +08:00
    自省什么鬼....

    反射吗? 还是和 反射 不太一样的另一种东西 . ..
    lightening
        7
    lightening  
       2016-01-06 18:37:53 +08:00
    @500miles 就是反射,翻译不同。
    nareix
        8
    nareix  
       2016-01-06 18:42:35 +08:00
    请使用 go generate
    loading
        9
    loading  
       2016-01-06 18:43:02 +08:00 via Android   ❤️ 1
    框架不是设计出来的,是实际项目做的过程中,剥离出来的,你路没走对。

    东西都没做过就谈写框架?
    qian19876025
        10
    qian19876025  
       2016-01-06 18:55:28 +08:00
    看球不懂 什么是反射? 什么是自省
    hqdmy
        11
    hqdmy  
       2016-01-06 18:56:14 +08:00
    楼主解释一下什么叫自省能力?学习一下
    firemiles
        12
    firemiles  
       2016-01-06 19:13:11 +08:00
    @lightening 我一直理解的自省和反射是不同的功能,自省只有查看属性功能,反射还能修改属性。
    firemiles
        13
    firemiles  
       2016-01-06 19:13:53 +08:00
    自省是 inspect ,反射是 reflect
    mcfog
        14
    mcfog  
       2016-01-06 19:27:11 +08:00
    @firemiles

    自省是 introspection 吧
    firemiles
        15
    firemiles  
       2016-01-06 19:51:23 +08:00
    @mcfog 我看的是 python 的自省模块叫 inspect ,可能不是很正式的叫法。
    aisk
        16
    aisk  
       2016-01-06 20:12:32 +08:00
    不弱,但是语法太蛋疼。
    KentY
        17
    KentY  
       2016-01-06 20:25:28 +08:00
    @firefox12 "动态一时爽,重构火葬场" 这句翻译成英语应该怎么说才妙?
    mfaner
        18
    mfaner  
       2016-01-06 20:31:32 +08:00
    java 里面 introspection 都叫内省
    zwy
        19
    zwy  
       2016-01-06 21:02:53 +08:00
    楼上各位说的自省,反射
    是不是指 meta-programming ?
    如果是的话,静态语言的这类能力非常弱, 不要指望了
    angelface
        20
    angelface  
       2016-01-06 21:28:05 +08:00
    go1.5 bootstrap 以后应该会改善多了, 静态语言也可以啊, 只是程度问题。 不过要达到 ruby 的程度,不太现实, 这是一个语言设计时的调调决定的。
    assassinpig
        21
    assassinpig  
       2016-01-06 21:45:33 +08:00
    dynamic makes you holy good then all your famliy will die when reflection happens later
    @KentY 随手提供了下素材
    lightening
        22
    lightening  
       2016-01-07 02:13:15 +08:00
    @firemiles 我好像是被误导了,以前看哪本 Python 书把 reflection 翻译成自省了……
    KentY
        23
    KentY  
       2016-01-07 03:30:27 +08:00
    @assassinpig 我觉得不够妙, 至少不如中文这个那么有意思, 还押韵... :)
    重构也不是 reflection, 是 refactory 吧
    mengzhuo
        24
    mengzhuo  
       2016-01-07 10:02:31 +08:00
    有没有好好看入门的书,怎么会没有自省?!

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

    楼主你还要什么?!
    njutree
        25
    njutree  
       2016-01-07 10:04:14 +08:00
    @KentY dynamic makes you shuangbility until Refactoring is coming !
    repus911
        26
    repus911  
       2016-01-07 14:05:52 +08:00
    动态语言重构怎么了 你们没有单元测试么
    smalltalk
        27
    smalltalk  
       2016-02-19 09:12:42 +08:00
    @repus911 静态语言改一处,所有使用的地方,都会自动改。
    个人觉得,对于没有外部兼容性要求的项目,单元测试真没意义。 对于我这种,编写边重构的人,单元测试执行一次就过时了。
    smalltalk
        28
    smalltalk  
       2016-02-19 09:14:37 +08:00
    单元测试是一种 adhoc 说明规格,虽然强大,但大部分时间不必要且不充分。依赖于单元测试,不如依赖于静态语言和集成测试。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3792 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:26 · PVG 18:26 · LAX 03:26 · JFK 06:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.