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

2021-08-17 21:55:45 +08:00
 chaleaoch
语法上没有限制. 但是我在书上没见过这么用.
为什么不这样用呢?

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

var temp struct{}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/796413

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX