V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
chaleaoch

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

  •  
  •   chaleaoch · Aug 17, 2021 · 2034 views
    This topic created in 1715 days ago, the information mentioned may be changed or developed.
    语法上没有限制. 但是我在书上没见过这么用.
    为什么不这样用呢?

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

    var temp struct{}
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5360 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 03:49 · PVG 11:49 · LAX 20:49 · JFK 23:49
    ♥ Do have faith in what you're doing.