成员变量这样的概念在不面向对象的语言里,怎样实现最优雅?

其实是最近在学习用GO写一个后台服务。

想把之前的一个服务重新写一遍,

之前一个请求进来,会new一个对象。然后对这个对象进行操作。

在类里边,可以定义成员变量,被所有的成员函数共享。有一些函数,都是共享这些变量的。

但是用GO重构的时候,因为GO没有类的概念,感觉像是少了一层东西。

定义一个全局变量吧,这个全局变量会被所有的请求共享(不是一个请求进来生成一份新的变量)。

不定义全局变量吧,很多函数都要用到同一个东西,所有的函数都需要不停的返回参数,供下一个函数使用。

使用结构体模拟类的方式总觉得别扭,到底要怎么修改才能让代码简洁又高效呢?

不知道问题描述的清不清楚,还请各位大佬支招。

阅读 2.5k
1 个回答

结构体就是类啊,这有什么别扭的
定义一个结构体,里面放需要共享的变量,再var一个这个结构体的全局指针,然后在初始化服务的时候就new出来就可以了

var srv *Service

type Service struct{
    public map[string]interface{}
}

func InitService(){
    srv = &Service{
        public: make(map[string]interface{}),
    }
}

func main(){
    InitService()
    // TODO
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题