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

菜鸡问题: 结构体定义在函数内部如何?

  •  
  •   chaleaoch · 2021-08-17 21:55:45 +08:00 · 1662 次点击
    这是一个创建于 1229 天前的主题,其中的信息可能已经有所发展或是发生改变。
    语法上没有限制. 但是我在书上没见过这么用.
    为什么不这样用呢?

    譬如 我想解析很多个 json 但是都是一次性的. 那我得起好多个名字.
    一种简便的方式是 在每个函数里面定义一个 结构体 不行吗? 这样命名空间是隔离的 结构体的名字就可以是一个了.
    9 条回复    2021-08-18 09:05:51 +08:00
    loveuer
        1
    loveuer  
       2021-08-17 21:59:15 +08:00
    既然这样,直接 map 呗
    darknoll
        2
    darknoll  
       2021-08-17 22:02:34 +08:00   ❤️ 1
    可以定义在内部,好处是可以匿名,缺点是不能定义方法
    chaleaoch
        3
    chaleaoch  
    OP
       2021-08-17 22:05:46 +08:00
    @loveuer ?啥意思? 给个例子大佬 菜鸡没理解.
    fiypig
        4
    fiypig  
       2021-08-17 22:09:56 +08:00 via iPhone
    不是一直都可以吗
    loveuer
        5
    loveuer  
       2021-08-17 22:16:25 +08:00   ❤️ 1
    @chaleaoch 如果你只是需要 json.Unmarshal, 可以用 map[string]interface{} 来接受
    Trim21
        6
    Trim21  
       2021-08-17 22:19:25 +08:00   ❤️ 1
    如果这个 struct 只用在这里的话完全可以这么定义
    kuangwinnie
        7
    kuangwinnie  
       2021-08-18 01:43:48 +08:00
    不如放出来你咋写的,我总觉得“解析多个 json 都是一次性的”听起来不是很好的工程实践。
    Maboroshii
        8
    Maboroshii  
       2021-08-18 01:48:37 +08:00 via Android
    我经常这么用。。方便简洁,只作用于函数内
    rrfeng
        9
    rrfeng  
       2021-08-18 09:05:51 +08:00 via Android   ❤️ 1
    当然可以写在函数内部。如果只是这个函数内部有用的话,甚至可以不用起名。

    var temp struct{}
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:58 · PVG 02:58 · LAX 10:58 · JFK 13:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.