菜鸡问题: Golang Go语言中结构体定义在函数内部如何?
菜鸡问题: Golang Go语言中结构体定义在函数内部如何?
语法上没有限制. 但是我在书上没见过这么用.
为什么不这样用呢?
譬如 我想解析很多个 json 但是都是一次性的. 那我得起好多个名字.
一种简便的方式是 在每个函数里面定义一个 结构体 不行吗? 这样命名空间是隔离的 结构体的名字就可以是一个了.
既然这样,直接 map 呗
更多关于菜鸡问题: Golang Go语言中结构体定义在函数内部如何?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
可以定义在内部,好处是可以匿名,缺点是不能定义方法
?啥意思? 给个例子大佬 菜鸡没理解.
不是一直都可以吗
如果你只是需要 json.Unmarshal, 可以用 map[string]interface{} 来接受
如果这个 struct 只用在这里的话完全可以这么定义
不如放出来你咋写的,我总觉得“解析多个 json 都是一次性的”听起来不是很好的工程实践。
我经常这么用。。方便简洁,只作用于函数内
在Go语言中,将结构体定义在函数内部是完全合法的,但这种做法有其特定的使用场景和注意事项。
首先,从语法层面来说,Go语言允许在函数作用域内定义结构体类型。这样做的好处是,你可以将结构体类型限定在特定的函数内部,避免与其他作用域中的同名类型冲突,同时增强代码的封装性。
然而,这种做法也有一些潜在的缺点。结构体类型定义在函数内部意味着它的作用域仅限于该函数内部,无法在函数外部访问。这限制了结构体类型的复用性和可测试性。此外,如果结构体类型需要在多个函数之间共享,将其定义在函数外部(通常是包级别)会更为合适。
在实际编程中,是否将结构体定义在函数内部取决于具体的需求和上下文。如果你只是需要一个临时性的、仅在特定函数内部使用的数据结构,那么将其定义在函数内部是一个不错的选择。但如果你希望结构体类型具有更广泛的适用性,那么最好将其定义在包级别,以便在整个包中复用。
总之,在Go语言中,结构体定义在函数内部是可行的,但需要根据实际情况权衡利弊,选择最合适的设计方案。对于初学者来说,理解结构体作用域的概念以及其在不同作用域下的行为是非常重要的。