开发者社区> 问答> 正文

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

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

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

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

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

 

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

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

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

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

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

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

展开
收起
爱吃鱼的程序员 2020-06-03 11:44:14 664 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    "成员变量" 是类定义中的一部分,它是类的专属。
    "类" 概念是由"结构体" 概念 演变而成的编程概念,所以结构体的属性,就可以作为 "成员变量" 来看待/来处理。
    既然"成员变量"是类或结构体的专属,那么,这样的概念在不(非)面向对象的语言里,离开了结构体就不存在了。
    如果你 "使用结构体模拟类的方式总觉得别扭", 而不走"结构体"这条路,那就无路可走了

    ######

    golang的struct和类是一样的,也可以new一个新的出来。你只需要写一个函数作为构造函数,new一个返回就行了:

    func NewMyStruct(v int) *MyStruct{
      var obj = new(MyStruct)
      obj.v = v
      return obj
    }

     

    2020-06-03 11:44:33
    赞同 展开评论 打赏
问答分类:
Go
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JAVA反射原理以及一些常见的应用 立即下载
继承与功能组合 立即下载
JavaScript面向对象的程序设计 立即下载