成员变量这样的概念在不面向对象的语言里,怎样实现最优雅?? 400 报错
其实是最近在学习用GO写一个后台服务。
想把之前的一个服务重新写一遍,
之前一个请求进来,会new一个对象。然后对这个对象进行操作。
在类里边,可以定义成员变量,被所有的成员函数共享。有一些函数,都是共享这些变量的。
但是用GO重构的时候,因为GO没有类的概念,感觉像是少了一层东西。
定义一个全局变量吧,这个全局变量会被所有的请求共享(不是一个请求进来生成一份新的变量)。
不定义全局变量吧,很多函数都要用到同一个东西,所有的函数都需要不停的返回参数,供下一个函数使用。
使用结构体模拟类的方式总觉得别扭,到底要怎么修改才能让代码简洁又高效呢?
不知道问题描述的清不清除,还请各位大佬支招。
"成员变量" 是类定义中的一部分,它是类的专属。
"类" 概念是由"结构体" 概念 演变而成的编程概念,所以结构体的属性,就可以作为 "成员变量" 来看待/来处理。
既然"成员变量"是类或结构体的专属,那么,这样的概念在不(非)面向对象的语言里,离开了结构体就不存在了。
如果你 "使用结构体模拟类的方式总觉得别扭", 而不走"结构体"这条路,那就无路可走了
golang的struct和类是一样的,也可以new一个新的出来。你只需要写一个函数作为构造函数,new一个返回就行了:
func NewMyStruct(v int) *MyStruct{
var obj = new(MyStruct)
obj.v = v
return obj
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。