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

刚学 Go 不久, 利用 Go 的反射写了个打印结构体的小项目,不知道有没有前辈能够指点一二

  •  
  •   szyp ·
    runningzyp · 2021-12-31 13:19:12 +08:00 · 2751 次点击
    这是一个创建于 1059 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看我之前的发帖,我个人是比较喜欢搞这种结构化输出的小把戏😂

    +----------+--------------------+---------------------------+
    |ROOT      |KEY                 |VALUE                      |
    +----------+--------------------+---------------------------+
    |          |Name                |xxx                        |
    |          |Age                 |18                         |
    |          |Address             |xxx                        |
    +----------+--------------------+---------------------------+
    

    可以将结构体打印成一个小表格,主要是为了 log 好看,本来使用 gist 就可以了,但是 Go 的库管理还挺方便,就建了个项目

    Github 上已经有类似的 table 库可以做这种事情,但是我觉得太大了,hhh 就自己写了一个练练手

    Demo https://github.com/runningzyp/GoStruct2Table

    5 条回复    2021-12-31 17:02:42 +08:00
    duanquanyong
        1
    duanquanyong  
       2021-12-31 13:30:42 +08:00
    你的超级链接点击会跳到本贴地址
    szyp
        2
    szyp  
    OP
       2021-12-31 13:48:07 +08:00
    @duanquanyong 我找不到附言了 hhh 地址在这里 https://github.com/runningzyp/GoStruct2Table
    SSang
        3
    SSang  
       2021-12-31 14:34:19 +08:00
    还行吧,看你只写了 string/int 这些很简单的,struct ,slice ,map 都不支持

    go 的反射项目可以参考一下 jinzhu/configor ,学一学怎么用递归。

    然后 table 你自己的实现漏洞也很多,而且实现方式也不够优雅,rodaine/table 这个项目可以参考。
    szyp
        4
    szyp  
    OP
       2021-12-31 15:05:33 +08:00
    @SSang #3 芜湖,竟然回复了这么多,感谢指导,我去看看,感谢感谢
    encro
        5
    encro  
       2021-12-31 17:02:42 +08:00
    这时候不经意就想起了,rust:

    println("{:#?}",any);
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1195 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:53 · PVG 01:53 · LAX 09:53 · JFK 12:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.